Xamarin.Forms Kształty
Element Shape
to typ View
, który umożliwia rysowanie kształtu na ekranie. Shape
obiekty mogą być używane wewnątrz klas układu i większości kontrolek, ponieważ Shape
klasa pochodzi z View
klasy.
Xamarin.FormsKształty są dostępne w Xamarin.Forms.Shapes
przestrzeni nazw w systemach iOS, Android, macOS, platforma uniwersalna systemu Windows (UWP) i Windows Presentation Foundation (WPF).
Shape
definiuje następujące właściwości:
Aspect
, typuStretch
, opisuje, jak kształt wypełnia przydzielone miejsce. Wartość domyślna tej właściwości toStretch.None
.Fill
, typuBrush
, wskazuje szczotkę używaną do malowania wnętrza kształtu.Stroke
, typuBrush
, wskazuje szczotkę używaną do malowania konturu kształtu.StrokeDashArray
, typuDoubleCollection
, który reprezentuje kolekcjędouble
wartości, które wskazują wzorzec kreski i przerw, które są używane do nakreślenia kształtu.StrokeDashOffset
, typudouble
, określa odległość w deseniu kreski, w którym rozpoczyna się kreska. Wartość domyślna tej właściwości to 0,0.StrokeLineCap
, typuPenLineCap
, opisuje kształt na początku i końcu wiersza lub segmentu. Wartość domyślna tej właściwości toPenLineCap.Flat
.StrokeLineJoin
, typuPenLineJoin
, określa typ sprzężenia używanego w wierzchołkach kształtu. Wartość domyślna tej właściwości toPenLineJoin.Miter
.StrokeMiterLimit
, typudouble
, określa limit stosunku długości miter do połowyStrokeThickness
kształtu. Wartość domyślna tej właściwości to 10.0.StrokeThickness
, typudouble
, wskazuje szerokość konturu kształtu. Wartość domyślna tej właściwości to 1.0.
Te właściwości są wspierane przez BindableProperty
obiekty, co oznacza, że mogą być obiektami docelowymi powiązań danych i stylizowanymi.
Xamarin.Forms definiuje liczbę obiektów, które pochodzą z Shape
klasy . Ellipse
Są to : , , Line
Path
, Polygon
, Polyline
i Rectangle
.
Malowanie kształtów
Brush
obiekty są używane do malowania kształtów Stroke
i Fill
:
<Ellipse Fill="DarkBlue"
Stroke="Red"
StrokeThickness="4"
WidthRequest="150"
HeightRequest="50"
HorizontalOptions="Start" />
W tym przykładzie określono pociągnięcie i wypełnienie elementu Ellipse
:
Ważne
Brush
obiekty używają konwertera typów, który umożliwia Color
określenie wartości dla Stroke
właściwości.
Jeśli nie określisz Brush
obiektu dla Stroke
, lub jeśli ustawisz wartość StrokeThickness
0, obramowanie wokół kształtu nie zostanie narysowane.
Aby uzyskać więcej informacji na temat Brush
obiektów, zobacz Xamarin.Forms Szczotki. Aby uzyskać więcej informacji na temat prawidłowych Color
wartości, zobacz Kolory w pliku Xamarin.Forms.
Rozciągnij kształty
Shape
obiekty mają Aspect
właściwość typu Stretch
. Ta właściwość określa sposób Shape
rozciągania zawartości obiektu w celu wypełnienia Shape
przestrzeni układu obiektu. Shape
Przestrzeń układu obiektu to ilość miejsca Shape
przydzielonego przez Xamarin.Forms system układu z powodu jawnego WidthRequest
ustawienia lub HeightRequest
ze względu na jego HorizontalOptions
ustawienia iVerticalOptions
.
Wyliczenie Stretch
definiuje następujące elementy członkowskie:
None
, który wskazuje, że zawartość zachowuje oryginalny rozmiar. Jest to wartość domyślnaShape.Aspect
właściwości.Fill
, który wskazuje, że rozmiar zawartości jest zmieniany w celu wypełnienia wymiarów docelowych. Współczynnik proporcji nie jest zachowywany.Uniform
, który wskazuje, że rozmiar zawartości jest zmieniany tak, aby pasował do wymiarów docelowych, zachowując współczynnik proporcji.UniformToFill
, wskazuje, że rozmiar zawartości jest zmieniany w celu wypełnienia wymiarów docelowych przy zachowaniu współczynnika proporcji. Jeśli współczynnik proporcji prostokąta docelowego różni się od źródła, zawartość źródłowa zostanie obcięta, aby zmieścić się w wymiarach docelowych.
Poniższy kod XAML pokazuje, jak ustawić Aspect
właściwość:
<Path Aspect="Uniform"
Stroke="Yellow"
Fill="Red"
BackgroundColor="LightGray"
HorizontalOptions="Start"
HeightRequest="100"
WidthRequest="100">
<Path.Data>
<!-- Path data goes here -->
</Path.Data>
</Path>
W tym przykładzie Path
obiekt rysuje serce. WidthRequest
Właściwości Path
obiektu i HeightRequest
są ustawione na 100 jednostek niezależnych od urządzenia, a jego Aspect
właściwość jest ustawiona na Uniform
wartość . W związku z tym rozmiar zawartości obiektu jest zmieniany tak, aby pasował do wymiarów docelowych, zachowując współczynnik proporcji:
Rysuj kształty kreskowane
Shape
obiekty mają StrokeDashArray
właściwość typu DoubleCollection
. Ta właściwość reprezentuje kolekcję double
wartości, które wskazują wzorzec kresek i przerw, które są używane do konturowania kształtu. A DoubleCollection
jest wartościami double
ObservableCollection
. Każda double
z nich w kolekcji określa długość kreski lub szczeliny. Pierwszy element w kolekcji, który znajduje się w indeksie 0, określa długość kreski. Drugi element w kolekcji, który znajduje się w indeksie 1, określa długość luki. W związku z tym obiekty z parzystą wartością indeksu określają kreski, podczas gdy obiekty z nieparzystną wartością indeksu określają luki.
Shape
obiekty mają StrokeDashOffset
również właściwość typu double
, która określa odległość w deseniu kreski, w którym rozpoczyna się kreska. Nie można ustawić tej właściwości, co spowoduje Shape
powstanie solidnego konspektu.
Kształty kreskowane można narysować, ustawiając właściwości StrokeDashArray
i StrokeDashOffset
. Właściwość StrokeDashArray
powinna być ustawiona na co najmniej jedną double
wartość, z każdą parą rozdzielaną przecinkami lub co najmniej jedną spacją. Na przykład wartości "0.5 1.0" i "0.5,1.0" są prawidłowe.
W poniższym przykładzie XAML pokazano, jak narysować prostokąt przerywany:
<Rectangle Fill="DarkBlue"
Stroke="Red"
StrokeThickness="4"
StrokeDashArray="1,1"
StrokeDashOffset="6"
WidthRequest="150"
HeightRequest="50"
HorizontalOptions="Start" />
W tym przykładzie narysowany jest wypełniony prostokąt z kreskowanym pociągnięciem:
Końce linii sterowania
Linia ma trzy części: czapkę początkową, treść linii i czapkę końcową. Limity początkowe i końcowe opisują kształt na początku i końcu wiersza lub segmentu.
Shape
obiekty mają StrokeLineCap
właściwość typu PenLineCap
, która opisuje kształt na początku i na końcu wiersza lub segmentu. Wyliczenie PenLineCap
definiuje następujące elementy członkowskie:
Flat
, który reprezentuje limit, który nie rozszerza ostatniego punktu wiersza. Jest to porównywalne z żadnym limitem wiersza i jest wartością domyślnąStrokeLineCap
właściwości.Square
, który reprezentuje prostokąt o wysokości równej grubości linii i długości równej połowie grubości linii.Round
, który reprezentuje półokrąg, który ma średnicę równą grubości linii.
Ważne
Właściwość StrokeLineCap
nie ma wpływu, jeśli ustawisz ją na kształcie, który nie ma punktów początkowych ani końcowych. Na przykład ta właściwość nie ma wpływu, jeśli ustawisz ją na obiekcie Ellipse
lub Rectangle
.
Poniższy kod XAML pokazuje, jak ustawić StrokeLineCap
właściwość:
<Line X1="0"
Y1="20"
X2="300"
Y2="20"
StrokeLineCap="Round"
Stroke="Red"
StrokeThickness="12" />
W tym przykładzie czerwona linia jest zaokrąglona na początku i na końcu wiersza:
Sprzężenia linii sterowania
Shape
obiekty mają StrokeLineJoin
właściwość typu PenLineJoin
, która określa typ sprzężenia używanego w wierzchołkach kształtu. Wyliczenie PenLineJoin
definiuje następujące elementy członkowskie:
Miter
, który reprezentuje regularne wierzchołki kątowe. Jest to wartość domyślnaStrokeLineJoin
właściwości.Bevel
, który reprezentuje skośne wierzchołki.Round
, który reprezentuje zaokrąglone wierzchołki.
Uwaga
StrokeLineJoin
Gdy właściwość jest ustawiona na Miter
wartość , StrokeMiterLimit
właściwość można ustawić na wartość , double
aby ograniczyć długość miter sprzężeń linii w kształcie.
Poniższy kod XAML pokazuje, jak ustawić StrokeLineJoin
właściwość:
<Polyline Points="20 20,250 50,20 120"
Stroke="DarkBlue"
StrokeThickness="20"
StrokeLineJoin="Round" />
W tym przykładzie ciemnoniebieska wielolinia zaokrągla sprzężenia na jego wierzchołkach: