色からブラシに変換


110

C#でa Colorをa に変換するにはどうすればよいBrushですか?

回答:


139

これがためであるColorBrush....

あなたはそれを変換することができません、あなたは新しいブラシを作る必要があります...

SolidColorBrush brush = new SolidColorBrush( myColor );

XAMLで必要な場合は、カスタム値コンバーターを作成してバインディングで使用できます


8
後方互換性のために、それは、使用する方がよいSolidBrushSystem.Drawing代わりに、.NET Frameworkの1.1以降で利用可能である)、 SolidColorBrushSystem.Windows.Media.NET Frameworkの3.0から)入手可能な出発。
BillyJoe 2018年

35
Brush brush = new SolidColorBrush(color);

逆に:

if (brush is SolidColorBrush colorBrush)
    Color color = colorBrush.Color;

またはそのようなもの。

すべてのブラシが色であるとは限らないので、すべての色を(SolidColor)ブラシに変えることができます。


刷毛する色!
レイザー

@raiserle:ちなみに、質問の内容I want to convert from Brush to Color in c#はタイトルが逆だったものです。
HB

25
SolidColorBrush brush = new SolidColorBrush( Color.FromArgb(255,255,139,0) )

18

あなたはこれを使うことができます:

new SolidBrush(color)

色は次のようなものです:

Color.Red

または

Color.FromArgb(36,97,121))

または...


2
下位互換性については、SolidBrushSystem.Drawing)は.NET Framework 1.1以降で使用でき、SolidColorBrushSystem.Windows.Media)は.NET Framework 3.0 以降で使用できるため、この回答の方が適しています。
BillyJoe 2018年

2

私は以前に同じ問題を抱えていました、ここに色変換を解決した私のクラスがありますそれを使用して楽しんでください:

ここで、クラスをマルチカラー変換に使用します

using System;
using System.Windows.Media;
using SDColor = System.Drawing.Color;
using SWMColor = System.Windows.Media.Color;
using SWMBrush = System.Windows.Media.Brush;

//Developed by امین امیری دربان
namespace APREndUser.CodeAssist
{
    public static class ColorHelper
    {
        public static SWMColor ToSWMColor(SDColor color) => SWMColor.FromArgb(color.A, color.R, color.G, color.B);
        public static SDColor ToSDColor(SWMColor color) => SDColor.FromArgb(color.A, color.R, color.G, color.B);
        public static SWMBrush ToSWMBrush(SDColor color) => (SolidColorBrush)(new BrushConverter().ConvertFrom(ToHexColor(color)));
        public static string ToHexColor(SDColor c) => "#" + c.R.ToString("X2") + c.G.ToString("X2") + c.B.ToString("X2");
        public static string ToRGBColor(SDColor c) => "RGB(" + c.R.ToString() + "," + c.G.ToString() + "," + c.B.ToString() + ")";
        public static Tuple<SDColor, SDColor> GetColorFromRYGGradient(double percentage)
        {
            var red = (percentage > 50 ? 1 - 2 * (percentage - 50) / 100.0 : 1.0) * 255;
            var green = (percentage > 50 ? 1.0 : 2 * percentage / 100.0) * 255;
            var blue = 0.0;
            SDColor result1 = SDColor.FromArgb((int)red, (int)green, (int)blue);
            SDColor result2 = SDColor.FromArgb((int)green, (int)red, (int)blue);
            return new Tuple<SDColor, SDColor>(result1, result2);
        }
    }

}

1

WindowsフォームとWPFが混在するアプリケーションを使用している場合、System.Drawing.ColorをSystem.Windows.Media.Colorに変換しようとすると、さらに複雑になる可能性があります。これを行う簡単な方法があるかどうかはわかりませんが、次のようにしました。

System.Drawing.Color MyColor = System.Drawing.Color.Red;
System.Windows.Media.Color = ConvertColorType(MyColor);

System.Windows.Media.Color ConvertColorType(System.Drawing.Color color)
{
  byte AVal = color.A;
  byte RVal = color.R;
  byte GVal = color.G;
  byte BVal = color.B;

  return System.Media.Color.FromArgb(AVal, RVal, GVal, BVal);
}

次に、前述のテクニックの1つを使用してブラシに変換できます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.