Ich habe die Farbe mit Xcedd Color Picker Kontrolle bekommen ... Ich versuche zu konvertieren System.windows.Media.Color
Zu SharpDx.Color
Format, aber nicht das erwartete Ergebnis.
Ich erhalte den Farbwert von der Steuerung mit diesem Code
//selected color is null then default color red
//_color is System.Windows.Media.Color Type
_color = ClrPckrTextColour.SelectedColor.HasValue ? ClrPckrTextColour.SelectedColor.Value : Colors.Red;
Dann ändere ich die Windows-Farbe zu SharpDx Color Verwenden dieses Codes
public static SharpDx.Color ToSharpDxColor(this System.Windows.Media.Color color)
{
//its known color code is yellow
System.Drawing.KnownColor colorenum = (System.Drawing.KnownColor)Enum.Parse(typeof(System.Drawing.KnownColor), color.GetColorName());
//but its return blue color
return new SharpDx.Color(System.Drawing.Color.FromKnownColor(colorenum).ToArgb());
}
//Get color name extension
public static string GetColorName(this System.Windows.Media.Color color)
{
Type colors = typeof(System.Windows.Media.Colors);
foreach (var prop in colors.GetProperties())
{
if (((System.Windows.Media.Color)prop.GetValue(null, null)) == color)
return prop.Name;
}
throw new Exception("The provided Color is not named.");
}
WICHTIG
Der Farbcode von Windows Media wird zurückgegeben Gelb ist richtig
aber SharpDX gibt blauen Farbcode zurück.
Was ist das Problem.Was ich vermisse.Kann mir jemand helfen, Kommentare Herzlich willkommen...
Antworten:
0 für die Antwort № 1Der ctor erwartet RGBA SharpDX.Color(int rgba)
und du benutzt ToArgb()
. Stellen Sie einfach Ihre Farbe im richtigen Format zur Verfügung und es funktioniert.
//its known color code is yellow
byte colA = System.Drawing.Color.FromKnownColor(System.Drawing.KnownColor.Yellow).A;
byte colR = System.Drawing.Color.FromKnownColor(System.Drawing.KnownColor.Yellow).R;
byte colG = System.Drawing.Color.FromKnownColor(System.Drawing.KnownColor.Yellow).G;
byte colB = System.Drawing.Color.FromKnownColor(System.Drawing.KnownColor.Yellow).B;
//now it is yellow color
SharpDX.Color aColor = new SharpDX.Color(colR, colG, colB, colA);