Xamarin.Forms Formen

Eine Shape ist ein Typ von View, mit der Sie eine Form auf dem Bildschirm zeichnen können. Shape -Objekte können innerhalb von Layoutklassen und den meisten Steuerelementen verwendet werden, da die Shape -Klasse von der View -Klasse abgeleitet wird.

Xamarin.FormsShapes sind im Xamarin.Forms.Shapes Namespace unter iOS, Android, macOS, dem Universelle Windows-Plattform (UWP) und dem Windows Presentation Foundation (WPF) verfügbar.

Shape definiert die folgenden Eigenschaften:

  • Aspectvom Typ Stretchbeschreibt, wie die Form den zugeordneten Raum ausfüllt. Der Standardwert dieser Eigenschaft ist Stretch.None.
  • Fillvom Typ Brushgibt den Pinsel an, der zum Zeichnen des Inneren der Form verwendet wird.
  • Strokevom Typ Brushgibt den Pinsel an, mit dem die Kontur der Form gezeichnet wird.
  • StrokeDashArrayvom Typ DoubleCollection, die eine Auflistung von double Werten darstellt, die das Muster von Bindestrichen und Lücken angeben, die zum Konturieren einer Form verwendet werden.
  • StrokeDashOffsetvom Typ doublegibt den Abstand innerhalb des Bindestrichmusters an, an dem ein Bindestrich beginnt. Der Standardwert dieser Eigenschaft ist 0,0.
  • StrokeLineCapvom Typ PenLineCapbeschreibt die Form am Anfang und Ende einer Linie oder eines Segments. Der Standardwert dieser Eigenschaft ist PenLineCap.Flat.
  • StrokeLineJoinvom Typ PenLineJoingibt den Typ des Joins an, der an den Scheitelpunkten einer Form verwendet wird. Der Standardwert dieser Eigenschaft ist PenLineJoin.Miter.
  • StrokeMiterLimitvom Typ doublegibt den Grenzwert für das Verhältnis der Gehrungslänge zur Hälfte StrokeThickness einer Form an. Der Standardwert dieser Eigenschaft ist 10,0.
  • StrokeThicknessvom Typ doublegibt die Breite der Formkontur an. Der Standardwert dieser Eigenschaft ist 1,0.

Diese Eigenschaften werden durch BindableProperty-Objekte gestützt, was bedeutet, dass sie Ziele von Datenbindungen sein können, und geformt.

Xamarin.Forms definiert eine Anzahl von -Objekten, die von der Shape -Klasse abgeleitet werden. Dies sind Ellipse, Line, Path, PolylinePolygon, und Rectangle.

Malen von Formen

Brush-Objekte werden verwendet, um die - und Fill-StrokeShapes zu zeichnen:

<Ellipse Fill="DarkBlue"
         Stroke="Red"
         StrokeThickness="4"
         WidthRequest="150"
         HeightRequest="50"
         HorizontalOptions="Start" />

In diesem Beispiel werden der Strich und die Füllung eines Ellipse angegeben:

Malformen Malformen

Wichtig

Brush -Objekte verwenden einen Typkonverter, mit dem Color Werte für die Stroke -Eigenschaft angegeben werden können.

Wenn Sie kein Objekt für Strokeangeben Brush oder auf 0 festlegenStrokeThickness, wird der Rahmen um die Form nicht gezeichnet.

Weitere Informationen zu Brush -Objekten finden Sie unter Xamarin.Forms Pinsel. Weitere Informationen zu gültigen Color Werten finden Sie unter Farben in Xamarin.Forms.

Stretch-Shapes

Shape -Objekte verfügen über eine Aspect -Eigenschaft vom Typ Stretch. Diese Eigenschaft bestimmt, wie der Inhalt eines Shape Objekts gestreckt wird, um den Shape Layoutbereich des Objekts auszufüllen. Der Layoutraum eines Shape Objekts ist der Platz, der Xamarin.FormsShape vom Layoutsystem zugewiesen wird, entweder aufgrund einer expliziten WidthRequest Einstellung und oder HeightRequest aufgrund seiner HorizontalOptions Einstellungen undVerticalOptions.

Die Stretch-Enumeration definiert die folgenden Member:

  • None, was angibt, dass der Inhalt seine ursprüngliche Größe behält. Dies ist der Standardwert der Shape.Aspect-Eigenschaft.
  • Fill, was angibt, dass die Größe des Inhalts geändert wird, um die Zieldimensionen zu füllen. Das Seitenverhältnis wird nicht beibehalten.
  • Uniform, die angibt, dass die Größe des Inhalts an die Zieldimensionen angepasst wird, wobei das Seitenverhältnis beibehalten wird.
  • UniformToFillgibt an, dass die Größe des Inhalts geändert wird, um die Zieldimensionen auszufüllen, wobei das Seitenverhältnis beibehalten wird. Falls das Seitenverhältnis des Zielrechtecks von der Quelle abweicht, wird der Quellinhalt entsprechend den Zieldimensionen beschnitten.

Im folgenden XAML-Code wird gezeigt, wie die -Eigenschaft festgelegt wird Aspect :

<Path Aspect="Uniform"
      Stroke="Yellow"
      Fill="Red"
      BackgroundColor="LightGray"
      HorizontalOptions="Start"
      HeightRequest="100"
      WidthRequest="100">
    <Path.Data>
        <!-- Path data goes here -->
    </Path.Data>  
</Path>      

In diesem Beispiel zeichnet ein Path -Objekt ein Herz. Die Path Eigenschaften und HeightRequest des WidthRequest Objekts sind auf 100 geräteunabhängige Einheiten festgelegt, und die Aspect -Eigenschaft ist auf Uniformfestgelegt. Daher wird die Größe des Objekts an die Zieldimensionen angepasst, wobei das Seitenverhältnis beibehalten wird:

Stretch-Shapes

Zeichnen gestrichelter Formen

Shape -Objekte verfügen über eine StrokeDashArray -Eigenschaft vom Typ DoubleCollection. Diese Eigenschaft stellt eine Auflistung von double Werten dar, die das Muster von Bindestrichen und Lücken angeben, die zum Konturieren einer Form verwendet werden. Ein DoubleCollection ist ein ObservableCollection von double -Werten. Jeder double in der Auflistung gibt die Länge eines Bindestrichs oder einer Lücke an. Das erste Element in der Auflistung, das sich bei Index 0 befindet, gibt die Länge eines Bindestrichs an. Das zweite Element in der Auflistung, das sich bei Index 1 befindet, gibt die Länge einer Lücke an. Daher geben Objekte mit einem geraden Indexwert Bindestriche an, während Objekte mit einem ungeraden Indexwert Lücken angeben.

Shape -Objekte verfügen auch über eine StrokeDashOffset -Eigenschaft vom Typ double, die den Abstand innerhalb des Bindestrichmusters angibt, an dem ein Bindestrich beginnt. Wenn diese Eigenschaft nicht festgelegt wird, hat dies Shape eine durchgezogene Gliederung.

Gestrichelte Formen können durch Festlegen der StrokeDashArray Eigenschaften und StrokeDashOffset gezeichnet werden. Die StrokeDashArray -Eigenschaft sollte auf einen oder double mehrere Werte festgelegt werden, wobei jedes Paar durch ein einzelnes Komma und/oder ein oder mehrere Leerzeichen getrennt ist. Beispielsweise sind "0.5 1.0" und "0.5,1.0" gültig.

Im folgenden XAML-Beispiel wird gezeigt, wie ein gestricheltes Rechteck gezeichnet wird:

<Rectangle Fill="DarkBlue"
           Stroke="Red"
           StrokeThickness="4"
           StrokeDashArray="1,1"
           StrokeDashOffset="6"
           WidthRequest="150"
           HeightRequest="50"
           HorizontalOptions="Start" />

In diesem Beispiel wird ein gefülltes Rechteck mit gestricheltem Strich gezeichnet:

Gestricheltes Rechteck

Steuerzeilenenden

Eine Linie hat drei Teile: Startkappe, Linienkörper und Endkappe. Die Anfangs- und Endkappen beschreiben die Form am Anfang und Ende einer Linie oder eines Segments.

Shape -Objekte verfügen über eine StrokeLineCap -Eigenschaft vom Typ PenLineCap, die die Form am Anfang und Ende einer Linie oder eines Segments beschreibt. Die PenLineCap-Enumeration definiert die folgenden Member:

  • Flat, die eine Obergrenze darstellt, die nicht über den letzten Punkt der Zeile hinaus reicht. Dies ist vergleichbar mit keinem Zeilenlimit und ist der Standardwert der StrokeLineCap -Eigenschaft.
  • Square, das ein Rechteck darstellt, das eine Höhe hat, die der Linienstärke und einer Länge entspricht, die der Hälfte der Linienstärke entspricht.
  • Round, die einen Halbkreis darstellt, der einen Durchmesser hat, der der Linienstärke entspricht.

Wichtig

Die StrokeLineCap -Eigenschaft hat keine Auswirkung, wenn Sie sie auf eine Form festlegen, die keine Anfangs- oder Endpunkte aufweist. Diese Eigenschaft hat z. B. keine Auswirkung, wenn Sie sie für ein Ellipse- oder Rectanglefestlegen.

Im folgenden XAML-Code wird gezeigt, wie die -Eigenschaft festgelegt wird StrokeLineCap :

<Line X1="0"
      Y1="20"
      X2="300"
      Y2="20"
      StrokeLineCap="Round"
      Stroke="Red"
      StrokeThickness="12" />

In diesem Beispiel wird die rote Linie am Anfang und Ende der Zeile gerundet:

Linienkappen

Steuerzeilenjoins

Shape -Objekte verfügen über eine StrokeLineJoin -Eigenschaft vom Typ PenLineJoin, die den Typ der Verknüpfung angibt, der an den Scheitelpunkten der Form verwendet wird. Die PenLineJoin-Enumeration definiert die folgenden Member:

  • Miter, die reguläre Winkelvertices darstellt. Dies ist der Standardwert der StrokeLineJoin-Eigenschaft.
  • Bevel, die abgeschrägte Scheitelpunkte darstellt.
  • Round, die abgerundete Scheitelpunkte darstellt.

Hinweis

Wenn die StrokeLineJoin -Eigenschaft auf Miterfestgelegt ist, kann die StrokeMiterLimit -Eigenschaft auf ein double festgelegt werden, um die Gehrungslänge von Linienjoins in der Form zu begrenzen.

Im folgenden XAML-Code wird gezeigt, wie die -Eigenschaft festgelegt wird StrokeLineJoin :

<Polyline Points="20 20,250 50,20 120"
          Stroke="DarkBlue"
          StrokeThickness="20"
          StrokeLineJoin="Round" />

In diesem Beispiel weist die dunkelblaue Polylinie abgerundete Verknüpfungen an ihren Scheitelpunkten auf:

Zeilenjoins