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:
Aspect
vom TypStretch
beschreibt, wie die Form den zugeordneten Raum ausfüllt. Der Standardwert dieser Eigenschaft istStretch.None
.Fill
vom TypBrush
gibt den Pinsel an, der zum Zeichnen des Inneren der Form verwendet wird.Stroke
vom TypBrush
gibt den Pinsel an, mit dem die Kontur der Form gezeichnet wird.StrokeDashArray
vom TypDoubleCollection
, die eine Auflistung vondouble
Werten darstellt, die das Muster von Bindestrichen und Lücken angeben, die zum Konturieren einer Form verwendet werden.StrokeDashOffset
vom Typdouble
gibt den Abstand innerhalb des Bindestrichmusters an, an dem ein Bindestrich beginnt. Der Standardwert dieser Eigenschaft ist 0,0.StrokeLineCap
vom TypPenLineCap
beschreibt die Form am Anfang und Ende einer Linie oder eines Segments. Der Standardwert dieser Eigenschaft istPenLineCap.Flat
.StrokeLineJoin
vom TypPenLineJoin
gibt den Typ des Joins an, der an den Scheitelpunkten einer Form verwendet wird. Der Standardwert dieser Eigenschaft istPenLineJoin.Miter
.StrokeMiterLimit
vom Typdouble
gibt den Grenzwert für das Verhältnis der Gehrungslänge zur HälfteStrokeThickness
einer Form an. Der Standardwert dieser Eigenschaft ist 10,0.StrokeThickness
vom Typdouble
gibt 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
, Polyline
Polygon
, und Rectangle
.
Malen von Formen
Brush
-Objekte werden verwendet, um die - und Fill
-Stroke
Shapes 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:
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 Stroke
angeben 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 derShape.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.UniformToFill
gibt 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 Uniform
festgelegt. Daher wird die Größe des Objekts an die Zieldimensionen angepasst, wobei das Seitenverhältnis beibehalten wird:
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:
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 derStrokeLineCap
-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 Rectangle
festlegen.
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:
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 derStrokeLineJoin
-Eigenschaft.Bevel
, die abgeschrägte Scheitelpunkte darstellt.Round
, die abgerundete Scheitelpunkte darstellt.
Hinweis
Wenn die StrokeLineJoin
-Eigenschaft auf Miter
festgelegt 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: