Xamarin.Forms Formas
A Shape
é um tipo de View
que permite desenhar uma forma na tela. Shape
objetos podem ser usados dentro de classes de layout e a maioria dos controles, porque a Shape
classe deriva da View
classe.
Xamarin.Forms As formas estão disponíveis no Xamarin.Forms.Shapes
namespace no iOS, Android, macOS, na Plataforma Universal do Windows (UWP) e no Windows Presentation Foundation (WPF).
Shape
define as propriedades a seguir:
Aspect
, do tipoStretch
, descreve como a forma preenche seu espaço alocado. O valor padrão dessa propriedade éStretch.None
.Fill
, do tipoBrush
, indica o pincel usado para pintar o interior da forma.Stroke
, do tipoBrush
, indica o pincel usado para pintar o contorno da forma.StrokeDashArray
, do tipoDoubleCollection
, que representa uma coleção dedouble
valores que indicam o padrão de traços e lacunas usados para delinear uma forma.StrokeDashOffset
, do tipodouble
, especifica a distância dentro do padrão de traço onde um traço começa. O valor padrão dessa propriedade é 0,0.StrokeLineCap
, do tipoPenLineCap
, descreve a forma no início e no final de uma linha ou segmento. O valor padrão dessa propriedade éPenLineCap.Flat
.StrokeLineJoin
, do tipoPenLineJoin
, especifica o tipo de junção que é usado nos vértices de uma forma. O valor padrão dessa propriedade éPenLineJoin.Miter
.StrokeMiterLimit
, do tipodouble
, especifica o limite da proporção do comprimento da esquadria para metade daStrokeThickness
forma de uma forma. O valor padrão dessa propriedade é 10.0.StrokeThickness
, do tipodouble
, indica a largura do contorno da forma. O valor padrão dessa propriedade é 1.0.
Essas propriedades são apoiadas por objetos BindableProperty
, o que significa que podem ser alvos de associações de dados e ser estilizada.
Xamarin.Forms Define um número de objetos que derivam da Shape
classe. Estes são Ellipse
, Line
, , Path
, Polygon
, Polyline
e Rectangle
.
Pintar formas
Brush
objetos são usados para pintar formas de Stroke
uma forma e Fill
:
<Ellipse Fill="DarkBlue"
Stroke="Red"
StrokeThickness="4"
WidthRequest="150"
HeightRequest="50"
HorizontalOptions="Start" />
Neste exemplo, o traçado e o preenchimento de um Ellipse
são especificados:
Importante
Brush
Os objetos usam um conversor de tipo que permite Color
que os valores sejam especificados para a Stroke
propriedade.
Se você não especificar um Brush
objeto para Stroke
o , ou se definir StrokeThickness
como 0, a borda ao redor da forma não será desenhada.
Para obter mais informações sobre Brush
objetos, consulte Xamarin.Forms Pincéis. Para obter mais informações sobre valores válidos Color
, consulte Cores no Xamarin.Forms.
Esticar formas
Shape
objetos têm uma Aspect
propriedade, do tipo Stretch
. Essa propriedade determina como o conteúdo de um Shape
objeto é estendido para preencher o Shape
espaço de layout do objeto. O espaço de layout de um Shape
objeto é a quantidade de espaço alocada Shape
pelo Xamarin.Forms sistema de layout, devido a uma configuração explícita WidthRequest
ou HeightRequest
devido a suas HorizontalOptions
e VerticalOptions
configurações.
A enumeração Stretch
define os seguintes membros:
None
, o que indica que o conteúdo preserva seu tamanho original. Este é o valor padrão da propriedadeShape.Aspect
.Fill
, que indica que o conteúdo é redimensionado para preencher as dimensões de destino. A taxa de proporção não é preservada.Uniform
, que indica que o conteúdo é redimensionado para se ajustar às dimensões de destino, preservando a proporção.UniformToFill
, indica que o conteúdo é redimensionado para preencher as dimensões de destino, preservando a proporção. Se a taxa de proporção do retângulo de destino for diferente da origem, o conteúdo de origem será cortado para se ajustar às dimensões de destino.
O XAML a seguir mostra como definir a Aspect
propriedade:
<Path Aspect="Uniform"
Stroke="Yellow"
Fill="Red"
BackgroundColor="LightGray"
HorizontalOptions="Start"
HeightRequest="100"
WidthRequest="100">
<Path.Data>
<!-- Path data goes here -->
</Path.Data>
</Path>
Neste exemplo, um Path
objeto desenha um coração. As Path
propriedades e HeightRequest
o WidthRequest
objeto são definidos como 100 unidades independentes de dispositivo e sua Aspect
propriedade é definida como Uniform
. Como resultado, o conteúdo do objeto é redimensionado para se ajustar às dimensões de destino, preservando a proporção:
Desenhar formas tracejadas
Shape
objetos têm uma propriedade StrokeDashArray
, do tipo DoubleCollection
. Essa propriedade representa uma coleção de double
valores que indicam o padrão de traços e lacunas usados para delinear uma forma. A DoubleCollection
é um ObservableCollection
de double
valores. Cada double
um na coleção especifica o comprimento de um traço ou lacuna. O primeiro item da coleção, localizado no índice 0, especifica o comprimento de um traço. O segundo item da coleção, localizado no índice 1, especifica o comprimento de uma lacuna. Portanto, objetos com um valor de índice par especificam traços, enquanto objetos com um valor de índice ímpar especificam lacunas.
Shape
Os objetos também têm uma StrokeDashOffset
propriedade, do tipo double
, que especifica a distância dentro do padrão de traço onde um traço começa. A falha ao definir essa propriedade resultará em um contorno Shape
sólido.
As formas tracejadas podem ser desenhadas definindo as StrokeDashArray
propriedades e StrokeDashOffset
. A StrokeDashArray
propriedade deve ser definida como um ou mais double
valores, com cada par delimitado por uma única vírgula e/ou um ou mais espaços. Por exemplo, "0.5 1.0" e "0.5,1.0" são ambos válidos.
O exemplo XAML a seguir mostra como desenhar um retângulo tracejado:
<Rectangle Fill="DarkBlue"
Stroke="Red"
StrokeThickness="4"
StrokeDashArray="1,1"
StrokeDashOffset="6"
WidthRequest="150"
HeightRequest="50"
HorizontalOptions="Start" />
Neste exemplo, um retângulo preenchido com um traçado tracejado é desenhado:
A linha de controle termina
Uma linha tem três partes: limite inicial, corpo da linha e limite final. As tampas inicial e final descrevem a forma no início e no final de uma linha ou segmento.
Shape
Os objetos têm uma StrokeLineCap
propriedade, do tipo PenLineCap
, que descreve a forma no início e no final de uma linha ou segmento. A enumeração PenLineCap
define os seguintes membros:
Flat
, que representa um limite que não se estende além do último ponto da linha. Isso é comparável a nenhum limite de linha e é oStrokeLineCap
valor padrão da propriedade.Square
, que representa um retângulo que tem uma altura igual à espessura da linha e um comprimento igual à metade da espessura da linha.Round
, que representa um semicírculo que tem um diâmetro igual à espessura da linha.
Importante
A StrokeLineCap
propriedade não terá efeito se você defini-la em uma forma que não tenha pontos de início ou fim. Por exemplo, essa propriedade não terá efeito se você defini-la em um Ellipse
, ou Rectangle
.
O XAML a seguir mostra como definir a StrokeLineCap
propriedade:
<Line X1="0"
Y1="20"
X2="300"
Y2="20"
StrokeLineCap="Round"
Stroke="Red"
StrokeThickness="12" />
Nesse exemplo, a linha vermelha é arredondada no início e no final da linha:
Junções de linha de controle
Shape
Os objetos têm uma StrokeLineJoin
propriedade, do tipo PenLineJoin
, que especifica o tipo de junção que é usado nos vértices da forma. A enumeração PenLineJoin
define os seguintes membros:
Miter
, que representa vértices angulares regulares. Este é o valor padrão da propriedadeStrokeLineJoin
.Bevel
, que representa vértices chanfrados.Round
, que representa vértices arredondados.
Observação
Quando a StrokeLineJoin
propriedade é definida como Miter
, a StrokeMiterLimit
propriedade pode ser definida como a double
para limitar o comprimento da esquadria das junções de linha na forma.
O XAML a seguir mostra como definir a StrokeLineJoin
propriedade:
<Polyline Points="20 20,250 50,20 120"
Stroke="DarkBlue"
StrokeThickness="20"
StrokeLineJoin="Round" />
Neste exemplo, a polilinha azul escura tem junções arredondadas em seus vértices: