/ / Sharpdx Geben nicht erwartete Farbe - c #, Farben, sharpdx

Sharpdx Geben nicht erwartet Farbe - c #, Farben, sharpdx

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 № 1

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