Hat jemand eine komplette Konvertierung von wpf Pen
zu gdi + one gemacht?Convert System.Windows.Media.Pen to System.Drawing.Pen
Es klingt zunächst nicht kompliziert: Konstruktor mit entsprechendem Pinsel verwenden. Aber es gibt so viele kleine Details: verschiedene Pinsel (5 in WPF und 5 in GDI + mit verschiedenen Namen, Eigenschaften, etc) und auch Stifteigenschaften selbst.
Vielleicht gibt es viel einfache Lösung, wie ToString()
/Parse()
eine oder über die Serialisierung oder vielleicht eine spezielle Methode oder versteckte Klasse. Ich will nicht lang und falsch gehen if(type is ...)
Weg.
Hier ist ein möglicher Ansatz (zu demonstrieren, kann nicht funktionieren)
using System.Windows.Media;
using GDI = System.Drawing;
public static GDI.Pen ToGDI(this Pen pen)
{
var brush = pen.Brush;
var thickness = pen.Thickness;
if(brush is SolidColorBrush)
{
var color = ((SolidColorBrush)brush).Color;
return new GDI.Pen(new GDI.SolidBrush(Colors.FromArgb(color.A, color.R, color.G, color.B)), (float)thickness);
}
else if(brush is ...)
{
...
}
}
Alle Pinsel in WPF können nicht in GDI + Pinsel konvertiert werden. Beispiel 'VisualBrush',' RadialGradientBrush', 'ImageBrush' usw. Was möchten Sie in diesem Fall tun? Ich spreche hier von Pinseln, weil 'Media.Pen'' Media.Brush' als Konstruktorparameter erlaubt. –
@SriramSakthivel, würde ich eine Konvertierung in kompatible Typ oder Ausnahme erwarten, wenn dieser Typ nicht dargestellt werden kann. Und das ist genau mein Punkt, ich selbst kann nur für die einfachsten Fälle in der geraden Weise überprüfen, wenn (Art ist ...) 'Weise. – Sinatr
http://stackoverflow.com/questions/1046301/convert-system-windows-media-brush-to-system-drawing-brush –