2016-03-29 2 views
0

Ich habe gerade angefangen, Geometry Drawing in Xaml zu verwenden und ich stieß auf diesen interessanten Artikel https://msdn.microsoft.com/en-us/library/aa480159.aspx. Hier finde ich heraus, dass die folgende Zeichenpinsel ein Diagramm als Ausgabe gibt.Wie funktioniert das DrawingBrush Geometry-Diagrammraster?

<DrawingBrush x:Name="gridBackgroundBrush" 
    Viewport="0,0,10,10" 
    ViewportUnits="Absolute" 
    TileMode="Tile"> 
    <DrawingBrush.Drawing> 
    <DrawingGroup> 
     <DrawingGroup.Children> 
     <GeometryDrawing Geometry="M0,0 L1,0 1,0.1, 0,0.1Z" Brush="Green" /> 
     <GeometryDrawing Geometry="M0,0 L0,1 0.1,1, 0.1,0Z" Brush="Green" /> 
     </DrawingGroup.Children> 
    </DrawingGroup> 
</DrawingBrush.Drawing> 
</DrawingBrush> 

Von weiteren Lektüre, ich herausgefunden habe, dass M bedeutet Ausgangspunkt oder bewegen, bedeutet, L-Linie und Z schließen bedeutet, konnte aber nicht herausfinden, wie diese mir zwei Linien geben wird - eine horizontale und eine vertikale? Jede Hilfe, die dies versteht, wird sehr geschätzt. Vielen Dank.

+0

Nun, es gibt * 2 * 'GeometryDrawing's es, eine für die horizontale Linie und eine für die vertikale Linie .. –

+0

Das ist richtig. Ich verstehe einfach nicht, was L1,0 1,0,1, 0 bedeutet, wie 1,0 ist? Ist das der Ausgangspunkt? – Sonny

Antwort

3

Also hier ist eine kurze Pause für Sie.

Ihr Beispiel ist eine DrawingBrush, die explizit auf TileMode="Tile" gesetzt ist. Dies entspricht repeat-x/repeat-y, wenn Sie mit CSS als Beispiel besser vertraut sind. So ist es angewiesen, sich von oben nach unten/von links nach rechts zu wiederholen.

Ihre zwei Bits Ihrer Geometry Drawing wenn einzeln übersetzt sind zwei Quadrate mit einer Dehnung vertikal, eine Dehnung horizontal. Während Sie explizit ViewportUnits setzen, diktieren Sie die Größe und die Position effektiv, wiederholte Spalten und Reihen wiederholt.

Ihre Pfadgeometrie verwendet Path Markup Syntax, um diese Zeilen zu zeichnen, wie Sie darauf hingewiesen haben. Für eine mehr visuelle Erklärung ersetzen Sie Ihren Pinsel auf jedem.

<GeometryDrawing Geometry="M0,0 L1,0 1,0.1, 0,0.1Z" Brush="Red" /> 
<GeometryDrawing Geometry="M0,0 L0,1 0.1,1, 0.1,0Z" Brush="Blue" /> 

... und voila! Sie haben selbst einen wiederholten Linienhintergrund mit effektiven vertikalen/horizontalen Spalten, die Ihr Gitter erstellen. Siehe Links für weitere Details und hoffe, dies hilft. Prost!

Oh, und die Frage, die Sie bekommen, dass from hatte auch einen Link, der ein wenig Licht auf sie geworfen hätte, aber nicht so viel wie Sie möchten, also habe ich dieses Duplikat nicht markiert.

NACHTRAG:

Etwas mehr Klarheit. Obwohl, wenn Sie mehr erfahren möchten, würde ich der Dokumentationsverknüpfung folgen, die jemand eine Menge Zeit verbrachte, die schreibt, um dieses bereits zu beantworten. Denke, wenn du ein x, y Gitter hast, auf das du Punkte zeichnest.

Angenommen, Sie verwenden das Stiftwerkzeug in Adobe Illustrator oder Blend. Ihr erster Klick setzt Ihren M als Startpunkt basierend auf der relativen Größe des Containers. Dann klickst du an einer anderen Stelle ... nun hast du effektiv eine L Linie.

Also wenn wir sehen: M0,0 L1,0 das ist unsere erste Startlinie. In diesem Fall ist es die obere Ecke, die sich bis zur rechten Ecke erstreckt, da sich in der Linie zwischen den beiden Punkten kein weiterer Anker befindet. Der nächste Satz dient als Anker, um der Linie zu sagen, dass sie ihre Richtung ändern soll, um die Seite zu bilden, und so weiter und so weiter, bis Sie das Ende bei Z erreichen. Hoffe, das hilft, aber ich würde die Dokumentation zuerst ermutigen.

Hier sind sie einzeln, wenn Sie wie bastelt mit Zahlen und Lernen fühlen:

<Path Data="M0,0 L1,0 1,0.1, 0,0.1Z" 
     Height="150" Width="150" Stroke="Red" /> 
<Path Data="M0,0 L0,1 0.1,1, 0.1,0Z" 
     Height="150" Width="150" Stroke="Blue" /> 
+0

Vielen Dank. Ihre Erklärung ist sehr hilfreich. Könntest du bitte auch erklären, was die Zahlen nach dem L anzeigen? – Sonny

+0

Überprüfen Sie die aktualisierte Antwort, ich muss zurückschwingen, wenn Sie vorher kein vollständiges Tutorial finden. Beschäftigte Tage. Prost! –

+0

Ich bin mir ziemlich sicher, dass ich einige ziemlich detaillierte Erklärungen von @Clemens gesehen habe, aber ich kann sie nicht finden. –

1

Ich kam die gleiche Sache, wenn ich GMaps V3 verwendete. Es ist ein SVG path notation Pfad, mit dem Sie auf WPF und auf Browsern auch zeichnen können. Sie können die vollständige Dokumentation in dem Link finden.

+3

Es ist nicht ganz genau SVG Pfadnotation. IIRC XAML-Pfade unterstützen beispielsweise keine relativen Koordinaten. Aber ja, es ist sehr, sehr nahe. –

+2

@EdPlunkett, danke für die Korrektur. Ich werde versuchen, mehr über die Unterschiede zu erfahren. –