WPF'de yol dizelerini yol nesnelerine program aracılığıyla nasıl dönüştürdüğünüzü izlemek çok zor değil, ancak bir geometriyi veya yolu mini dilde bir dizeye dönüştürmek için yerleşik bir işlev var mı?Geometri/Yol, Minilanguage Dize Dönüştür?
5
A
cevap
6
Düzeltme: Şimdi baktığımda bunun yapılabilmesi gereken GeometryConverter
adında bir sınıf olması gerektiğini düşündüm ve gerçekten de var. Sadece bunlardan birini oluşturun ve dönüştürmek istediğiniz geometri üzerinde ConvertToString
kullanın.
Sen XAML olarak çıktı nesnelere XamlWriter
sınıfını kullanabilirsiniz, geometri otomatik mini dile azalacaktır.
örn. Bu giriş ise:
<DrawingImage xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<DrawingImage.Drawing>
<DrawingGroup>
<DrawingGroup.Children>
<GeometryDrawing Brush="#FFFF0000">
<GeometryDrawing.Pen>
<Pen Brush="#FF000000" />
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<PathGeometry Figures="M100,100L100,0A100,100,0,0,1,186.6,150L100,100" />
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing Brush="#FF0000FF">
<GeometryDrawing.Pen>
<Pen Brush="#FF000000" />
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<PathGeometry Figures="M100,100L186.6,150A100,100,0,0,1,13.4,150L100,100" />
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing Brush="#FF008000">
<GeometryDrawing.Pen>
<Pen Brush="#FF000000" />
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<PathGeometry Figures="M100,100L13.4,150A100,100,0,0,1,100,0L100,100" />
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingGroup.Children>
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
tamamı PathGeometry
artık şudur:
<DrawingImage x:Name="segmentsDrawing">
<DrawingImage.Drawing>
<DrawingGroup>
<GeometryDrawing Brush="Red">
<GeometryDrawing.Pen>
<Pen Brush="Black" />
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<PathGeometry>
<PathFigure StartPoint="100,100">
<PathFigure.Segments>
<LineSegment Point="100,0"/>
<ArcSegment Point="186.6,150" SweepDirection="Clockwise" Size="100,100"/>
<LineSegment Point="100,100"/>
</PathFigure.Segments>
</PathFigure>
</PathGeometry>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing Brush="Blue">
<GeometryDrawing.Pen>
<Pen Brush="Black"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<PathGeometry>
<PathFigure StartPoint="100,100">
<PathFigure.Segments>
<LineSegment Point="186.6,150"/>
<ArcSegment Point="13.4,150" SweepDirection="Clockwise" Size="100,100"/>
<LineSegment Point="100,100"/>
</PathFigure.Segments>
</PathFigure>
</PathGeometry>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing Brush="Green">
<GeometryDrawing.Pen>
<Pen Brush="Black"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<PathGeometry>
<PathFigure StartPoint="100,100">
<PathFigure.Segments>
<LineSegment Point="13.4,150"/>
<ArcSegment Point="100,0" SweepDirection="Clockwise" Size="100,100"/>
<LineSegment Point="100,100"/>
</PathFigure.Segments>
</PathFigure>
</PathGeometry>
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
... ve
XmlTextWriter writer = new XmlTextWriter(@"C:\Users\Public\Test.xml", new UTF8Encoding());
writer.Formatting = Formatting.Indented;
writer.Indentation = 1;
writer.IndentChar = '\t';
XamlWriter.Save(segmentsDrawing, writer);
... aşağıdaki olsun ... serialize mini dilde. Uygulamanızda bunu hemen kullanmak istiyorsanız, onu bir
MemoryStream
'a yazıp ondan bir
XmlDocument
oluşturarak verileri alın.
+0
Bu döner kavşak, ama bu sadece hile yapabilir! Teşekkürler... –
Sanırım öyle değil, çünkü daha doğrusu başka bir şeydir: mini dil geometriye ayrıştırılır. –
"WPF'de yol dizelerini yol nesnelerine program aracılığıyla nasıl dönüştürdüğünüzü belirlemek çok zor değil" Bazı kaynaklarınızı paylaşmak ister misiniz? – jpierson
Elbette! http://stackoverflow.com/questions/2029680/wpf-c-path-how-to-get-from-a-string-with-path-data-to-geometry-in-code-not-in –