Compartilhar via


Point Estrutura

Definição

Representa valores de coordenadas x e y que definem um ponto em um plano bidimensional.

public value class Point
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.FoundationContract, 65536)]
struct Point
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.FoundationContract), 65536)]
public struct Point
var point = {
x : /* Your value */,
y : /* Your value */
}
Public Structure Point
<object property="X,Y"/>
-or
<object property="X Y"/>
Herança
Point
Atributos

Requisitos do Windows

Família de dispositivos
Windows 10 (introduzida na 10.0.10240.0)
API contract
Windows.Foundation.FoundationContract (introduzida na v1.0)

Comentários

Às vezes, um valor Point representa um espaço de coordenadas no plano da janela main de um aplicativo, mas há outras interpretações possíveis de valores point que podem variar, dependendo da propriedade que usa o valor Point.

Javascript: Em JavaScript, um Point é um objeto com duas propriedades de dados: x e y. Além de x e y, a API restante listada aqui nas listas Membros de ponto (ou mostradas no sumário) não se aplicam à programação JavaScript.

Observações sobre a sintaxe XAML

Os valores de ponto são usados extensivamente para propriedades gráficas e propriedades relacionadas à interface do usuário semelhantes em todo o vocabulário XAML para aplicativos Windows Runtime.

Um espaço ou uma vírgula pode ser usado como delimitador entre valores X e Y . A convenção comum para pontos de coordenadas é usar um delimitador de vírgula.

As estruturas de ponto não podem ser declaradas como recursos em um ResourceDictionary. Uma solução alternativa em potencial é usar um recurso x:String e, em seguida, injetá-lo em uma cadeia de caracteres analisada com XamlReader.Load.

Alguns usos de XAML usam o tipo Point para representar um ponto lógico. Confira "Pontos Lógicos" nos Comentários.

Valores de ponto e como eles são interpretados por propriedades

Alguns (mas não todos) usos do tipo Point especificam o local em um espaço de coordenadas. Dependendo do contexto, o local pode estar no quadro de referência de uma área de conteúdo ou estar dentro do quadro de referência de um elemento de layout específico.

X e Y para um Point podem ser valores não inteiros. No entanto, isso pode introduzir a possibilidade de renderização de sub pixel, que pode alterar cores e anti-alias em qualquer linha reta ao longo da borda do sub pixel. É assim que o mecanismo de renderização XAML trata os limites de sub pixel. Portanto, para obter melhores resultados, use valores inteiros ao declarar coordenadas e formas usadas para posicionamento e renderização da interface do usuário.

X e Y para um ponto podem ser negativos em alguns casos. Normalmente, isso resulta em um Point que especifica uma coordenada que está deliberadamente fora do quadro de referência, a menos que haja tradução adicional. No entanto, algumas propriedades XAML rejeitam um Point com X ou Y negativo como um valor inválido. Restrições de valor normalmente são indicadas nas páginas de referência para propriedades.

Pontos lógicos

Alguns usos do tipo Point em Windows Runtime aplicativos não estão relacionados diretamente aos quadros de referência de coordenadas. Em vez disso, esses são pontos lógicos, em que o valor de X e Y deve estar entre 0 e 1, inclusive. Esse é um dos motivos pelos quais os valores X e Y dão suporte a valores de ponto flutuante em vez de serem restritos a valores inteiros. Os valores de ponto lógico são interpretados por um contexto: a apresentação ou o comportamento final podem ser especificados ou modificados por uma propriedade ou configuração diferente. Às vezes, os pontos expressam informações que não estão relacionadas ao espaço de coordenadas. Exemplos do conceito de ponto lógico no aplicativo são os valores de Animation.KeySpline (marca uma animação), RenderTransformOrigin de um UIElement e os valores de GradientStop.Offset para um LinearGradientBrush.

Uma propriedade de valor de ponto que é um uso de ponto lógico pode invalidar valores menores que 0 ou maiores que 1, mas as especificações variam de acordo com a propriedade. Restrições de valor normalmente são indicadas nas páginas de referência para propriedades individuais, em vez de aqui na referência point.

Valores de ponto e API de gráficos XAML

Os elementos gráficos usados para definir uma interface do usuário XAML geralmente usam propriedades de valor de ponto para declarar suas características. Por exemplo, um EllipseGeometry usa um valor Point para definir sua propriedade Center .

Os elementos gráficos usam um dos dois modelos. Alguns dos elementos gráficos são derivados de FrameworkElement. Esses elementos têm um comportamento de renderização definido quando colocados em uma interface do usuário e quando as propriedades do elemento são atribuídas. Exemplos desse tipo de elemento são Rectangle e todos os outros tipos no namespace Windows.UI.Xaml.Shapes . Outros elementos gráficos não derivam de FrameworkElement e não têm um comportamento de renderização próprio. Em vez disso, esses elementos são compostos para fornecer o valor de uma propriedade em algum outro elemento que tenha um comportamento de renderização. Em outras palavras, eles são dados para um modelo gráfico mais abrangente. Por exemplo, os elementos gráficos que você usa para compor Path.Data, como LineSegment, geralmente têm uma propriedade Point-value.

Alguns elementos gráficos usam vários valores point representados em uma única propriedade. Essas propriedades usam o tipo PointCollection . Qualquer propriedade Windows Runtime que usa um PointCollection dá suporte a uma sintaxe XAML que analisa a cadeia de caracteres de atributo para obter valores X e Y para vários pontos. Um exemplo de uma propriedade gráfica que usa PointCollection é Polygon.Points.

Apontar valores de eventos de entrada XAML e testes de clique

Um valor Point é retornado pelos dados do evento para determinados eventos de entrada. Por exemplo, GetCurrentPoint fornece um valor de coordenada de onde ocorreu um evento Pointer na interface do usuário do aplicativo. Em termos gerais, esses valores point referem-se a um determinado quadro de referência de coordenadas e é importante saber o que esse quadro de referência representa. Para eventos de entrada, o quadro de referência por padrão é a janela main aplicativo, não a tela/exibição geral. Isso permite um quadro de referência consistente caso a janela seja movida ou redimensionada. Algumas API, como GetCurrentPoint e GetPosition , também fornecem uma maneira de traduzir para um quadro de referência específico do elemento, o que é útil ao trabalhar com eventos de entrada que são manipulados por um controle individual. Para obter mais informações, consulte Entrada de ponteiro de identificador.

O desenvolvimento de interface do usuário XAML também tem um conceito conhecido como teste de clique, em que você pode usar métodos utilitários para testar como os eventos de entrada relatariam informações se o usuário executasse uma ação de ponteiro em um local de coordenada específico da interface do usuário. Para dar suporte ao conceito de teste de clique, duas assinaturas de FindElementsInHostCoordinates usam um parâmetro de entrada Point, assim como FindSubElementsForTouchTargeting. Para obter mais informações, consulte Interações por mouse.

Animando valores de Ponto

O Windows Runtime fornece um meio de animar os valores de qualquer propriedade que usa um Point como um valor, desde que essa propriedade seja implementada como uma propriedade de dependência. O Point tem seu próprio tipo de suporte de animação porque não é possível animar individualmente os valores x e y de um Point. As estruturas não podem dar suporte a propriedades de dependência. Use o tipo PointAnimation para animações de a ou use tipos derivados de PointAnimationUsingKeyFrames para comportamento de animação de quadro chave. Para obter mais informações sobre como animar um valor point e como as animações funcionam na interface do usuário XAML, consulte Animações com storyboard.

Projeção e membros do Point

Se você estiver usando uma linguagem Microsoft .NET (C# ou Microsoft Visual Basic) ou extensões de componente do Visual C++ (C++/CX), o Point terá membros que não são de dados disponíveis e seus membros de dados serão expostos como propriedades de leitura/gravação, não campos. Confira Ponto no Navegador de API do .NET.

Se você estiver programando com C++/WinRT ou a WRL (Biblioteca de Modelos do Windows Runtime C++), somente os campos de membro de dados existirão como membros do Point e você não poderá usar os métodos ou propriedades do utilitário da projeção do .NET. O código C++ pode acessar métodos utilitários semelhantes que estão disponíveis na classe estática PointHelper .

Esta tabela mostra os métodos equivalentes disponíveis no .NET e no C++.

.NET (Ponto) C++ (PointHelper)
Point(Double, Double) FromCoordinates(Single, Single)

Campos

X

A posição horizontal do ponto.

Y

A posição vertical do ponto.

Aplica-se a

Confira também