Czy ktoś dokonał pełnej konwersji z wpf Pen
na gdi + jeden?Konwertuj System.Windows.Media.Pen na System.Drawing.Pen
Początkowo nie brzmi to skomplikowanie: używaj konstruktora z odpowiednim pędzlem. Ale jest tak wiele szczegółów małych:: różne pędzle (5 w wpf i 5 w gdi + o różnych nazwach, właściwościach, itp.), A także same własności pióra.
Być może istnieje wiele prosty rozwiązanie, jak ToString()
/Parse()
jeden lub poprzez serializacji czy może specjalnej metody lub ukrytego klasie. Nie chcę iść długo i źle.
Oto jeden z możliwych rozwiązań (w celu wykazania, mogą nie działać)
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 ...)
{
...
}
}
Wszystkie pędzle w pliku wpf nie mogą zostać przekonwertowane na gdi + pędzel. Przykład 'VisualBrush',' RadialGradientBrush', 'ImageBrush' itd. Co chciałbyś w tym przypadku zrobić? Mówię tu o pędzlach, ponieważ 'Media.Pen' zezwala na' Media.Brush' jako parametr konstruktora. –
@SriramSakthivel, Spodziewam się konwersji na kompatybilny typ lub wyjątek, jeśli tego typu nie można reprezentować. I to jest właśnie moja uwaga, ja sam mogę tylko sprawdzić najprostsze przypadki w prosty sposób 'if (type is ...)' way. – Sinatr
http://stackoverflow.com/questions/1046301/convert-system-windows-media-brush-to-system- Drawing-brush –