2009-06-25 11 views
5

Comment puis-je convertir un System.Windows.Media.Brush en System.Drawing.Brush? J'essaye d'obtenir la couleur d'un system.windows.media.brush formaté à un objet de System.Drawing.Color.Convertir System.Windows.Media.Brush en System.Drawing.Brush

La solution ci-dessous ne fonctionne pas parce qu'il a besoin d'un objet SolidColorBrush, alors que l'objet i besoin de conversion est un objet system.windows.media.brush:

public System.Drawing.Color GetColor(System.Windows.Media.SolidColorBrush oBrush) 
{ 
    return System.Drawing.Color.FromArgb(oBrush.Color.A, 
            oBrush.Color.R, 
            oBrush.Color.G, 
            oBrush.Color.B); 
} 

Répondre

13

Je crois que vous pouvez juste jeter en tant que SolidColorBrush pour obtenir la couleur.

Essayez quelque chose comme:

MyColor = ((SolidColorBrush)MyMediaBrush).Color; 
+0

Vous devriez vraiment faire une distribution directe autrement si la distribution échoue, vous obtiendrez une exception de référence null confusion au lieu d'une exception de transtypage invalide plus descriptive. –

+0

Merci Nathan, j'étais sous l'hypothèse que les deux méthodes ne différaient que par la syntaxe. C'est bon à savoir. – stevosaurus

0
System.Drawing.Color c1 = new System.Drawing.Color(); 
      c1 = System.Drawing.Color.FromName(Properties.Settings.Default.myColor); 
      System.Windows.Media.Color c2 = new Color(); 
      c2 = Color.FromArgb(c1.A, c1.R, c1.G, c1.B);