2011-04-12 73 views

回答

95

這是ColorBrush ....

你不能將它,你必須做出一個新的刷....

SolidColorBrush brush = new SolidColorBrush(myColor); 

現在,如果你需要它XAML,你可以做一個自定義值轉換器,並使用在綁定

+0

爲了向後兼容,這將是更好使用'SolidBrush'('System.Drawing'),這是因爲.NET框架1.1可用,而不是'SolidColorBrush'('System.Windows.Media'),可以從開始.NET Framework 3.0。 – mbjoe 2018-01-31 15:45:34

30
Brush brush = new SolidColorBrush(color); 

鄰其他方式:

if (brush is SolidColorBrush) 
{ 
    Color color = (brush as SolidColorBrush).Color; 
} 

或類似的東西。

點是不是所有刷子的顏色,但你可以把所有的顏色爲(的SolidColor)刷。

+0

顏色刷! – raiserle 2018-01-04 16:30:51

+0

@raiserle:對於您的信息,問題內容曾經是'我想從c#中的筆刷轉換爲顏色',而標題則是另一種方式。 – 2018-01-04 19:36:22

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

您可以使用此:

new SolidBrush(color) 

,其中顏色是這樣的:

Color.Red 

Color.FromArgb(36,97,121)) 

或...

+0

爲了向後兼容,這個答案是更好,因爲'SolidBrush'('System.Drawing')是因爲.NET Framework 1.1中提供,而'SolidColorBrush'('System.Windows。媒體「)從.NET Framework 3.0開始可用。 – mbjoe 2018-01-31 15:47:45

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); 
} 

然後你可以使用前面提到轉換爲Brush的技術之一。

0

它通常足夠使用兄弟姐妹的或父母的畫筆爲目的,那就是在WPF容易獲得通過檢索他們的前景或背景屬性。

裁判:Control.Background

0

我收到同樣的問題,這裏是我的類,它解決了顏色轉換 使用它,並享受:

這裏你要去,用我的同班同學多色彩轉換

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); 
     } 
    } 

}