Share via


Point 構造体

定義

2 次元平面内の点を定義する x 座標と y 座標値を表します。

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"/>
継承
Point
属性

Windows の要件

デバイス ファミリ
Windows 10 (10.0.10240.0 で導入)
API contract
Windows.Foundation.FoundationContract (v1.0 で導入)

注釈

Point 値は、アプリのメイン ウィンドウの平面内の座標空間を表す場合がありますが、Point 値を使用するプロパティに応じて、Point 値の解釈は他にも考えられます。

Javascript: JavaScript では、Point は x と y の 2 つのデータ プロパティを持つオブジェクト ですx および y 以外の Point メンバー リスト (または目次に表示) に記載されている残りの API は、JavaScript プログラミングには適用されません。

XAML 構文に関する注意事項

ポイント値は、Windows ランタイム アプリの XAML ボキャブラリ全体で、グラフィックス プロパティと同様の UI 関連プロパティに広く使用されます。

X 値と Y 値の間の区切り記号として、スペースまたはコンマを使用できます。 座標ポイントの一般的な規則は、コンマ区切り記号を使用する方法です。

ResourceDictionary でポイント構造をリソースとして宣言することはできません。 潜在的な回避策は、 x:String リソースを使用 し、 XamlReader.Load で解析された文字列に挿入することです。

一部の XAML では、Point 型を使用して 論理ポイントを表します。 「解説」の「論理点」を参照してください。

ポイント値と、それらがプロパティによってどのように解釈されるか

Point 型の一部 (ただし、すべてではありません) の使用法は、座標空間内の位置を指定します。 コンテキストによっては、場所がコンテンツ領域の参照フレーム内にあるか、特定のレイアウト要素の参照フレーム内にある可能性があります。

Point の XY には、非整数値を指定できます。 ただし、これによりサブピクセル レンダリングの可能性が生じる可能性があります。これにより、サブピクセル エッジに沿った直線の色やアンチエイリアスを変更できます。 これは、XAML レンダリング エンジンがサブピクセル境界を処理する方法です。 そのため、最適な結果を得るには、UI の配置とレンダリングに使用される座標と図形を宣言するときに整数値を使用します。

ポイントの XY は、場合によっては負の値になる場合があります。 通常、この結果、追加の翻訳がない限り、意図的に参照フレームの外側にある座標を指定する Point が生成されます。 ただし、一部の XAML プロパティでは、負の X または Y を 持つ Point が無効な値として拒否されます。 値制約は、通常、プロパティの参照ページに記載されています。

論理ポイント

Windows ランタイム アプリでの Point 型の一部の使用法は、参照の座標フレームに直接関係しません。 代わりに、これらは論理ポイントであり、 XY の値はそれぞれ 0 から 1 の間であると想定されます。 これは、 X 値と Y 値が整数値に制約されるのではなく、浮動小数点値をサポートする理由の 1 つです。 論理ポイント値はコンテキストによって解釈されます。最終的なプレゼンテーションまたは動作は、別のプロパティまたは設定によって指定または変更される可能性があります。 ポイントは、座標空間にまったく関連しない情報を表す場合があります。 アプリケーションの論理ポイントの概念の例としては、Animation.KeySpline (アニメーションのペース)、UIElementの RenderTransformOriginLinearGradientBrushの GradientStop.Offset 値の値があります。

論理ポイントを使用する Point-value プロパティは、0 より小さい値または 1 より大きい値を無効にする可能性がありますが、詳細はプロパティによって異なります。 通常、値制約は、ポイント参照ではなく、個々のプロパティの参照ページに記載されています。

ポイント値と XAML グラフィックス API

XAML UI の定義に使用されるグラフィックス要素では、多くの場合、ポイント値プロパティを使用して特性を宣言します。 たとえば、 EllipseGeometry では Point 値を使用してその Center プロパティを設定します。

グラフィックス要素では、2 つのモデルのいずれかを使用します。 一部のグラフィックス要素は FrameworkElement から派生しています。 これらの要素は、UI に配置されたときと、要素プロパティが割り当てられるときに定義されたレンダリング動作を持ちます。 この種類の要素の例としては 、四角形、Windows.UI.Xaml.Shapes 名前空間のその他のすべての型があります。 他のグラフィックス要素は FrameworkElement から派生せず、独自のレンダリング動作を持っていません。 代わりに、これらの要素は、レンダリング動作を持つ他の要素のプロパティの値を提供するように構成されます。 つまり、より包括的なグラフィックス モデルのデータです。 たとえば、LineSegment などの Path.Data の作成に使用するグラフィックス要素には、多くの場合、Point-value プロパティがあります。

一部のグラフィックス要素では、1 つのプロパティで表される複数の Point 値が使用されます。 これらのプロパティでは、 PointCollection 型を使用します。 PointCollection を受け取るWindows ランタイム プロパティは、属性文字列を解析して複数のポイントの X 値と Y 値を取得する XAML 構文をサポートします。 PointCollection を使用するグラフィックス プロパティの例は Polygon.Points です

XAML 入力イベントからのポイント値とヒット テスト

Point 値は、特定の入力イベントのイベント データによって返されます。 たとえば、 GetCurrentPoint は、アプリ UI で Pointer イベントが発生した場所の座標値を提供します。 一般に、これらの Point 値は座標参照の特定のフレームを参照し、その参照フレームが何を表しているのかを知っていることが重要です。 入力イベントの場合、既定では参照フレームはメインアプリ ウィンドウであり、画面/表示全体ではありません。 これにより、ウィンドウが移動またはサイズ変更された場合に備えて、一貫した参照フレームが可能になります。 GetCurrentPointGetPosition などの一部の API は、要素固有の参照フレームに変換する方法も提供します。これは、個々のコントロールによって処理される入力イベントを操作する場合に便利です。 詳細については、「 ポインター入力を処理する」を参照してください。

XAML UI 開発には ヒット テストと呼ばれる概念もあります。ユーティリティ メソッドを使用して、ユーザーが UI の特定の座標位置でポインター アクションを実行した場合に入力イベントが情報を報告する方法をテストできます。 ヒット テストの概念をサポートするために、 FindElementsInHostCoordinates の 2 つのシグネチャは、 FindSubElementsForTouchTargeting と同様に Point 入力パラメーターを使用します。 詳しくは、「マウス操作」をご覧ください。

ポイント値のアニメーション化

Windows ランタイムは、そのプロパティが依存関係プロパティとして実装されている限り、Point を値として使用するプロパティの値をアニメーション化する手段を提供します。 Point には独自のアニメーション サポートタイプがあります。Point の x 値と y 値を個別にアニメーション化することはできません。 構造体は依存関係プロパティをサポートできません。 From-to アニメーションには PointAnimation 型を使用するか、キー フレーム アニメーションの動作に PointAnimationUsingKeyFrames 派生型を使用します。 ポイント値をアニメーション化する方法と XAML UI でのアニメーションの動作の詳細については、「 ストーリーボード化されたアニメーション」を参照してください。

Point のプロジェクションとメンバー

Microsoft .NET 言語 (C# または Microsoft Visual Basic)、または Visual C++ コンポーネント拡張機能 (C++/CX) を使用している場合、Point には非データ メンバーが使用でき、そのデータ メンバーはフィールドではなく読み取り/書き込みプロパティとして公開されます。 「.NET API ブラウザーの ポイント 」を参照してください。

C++/WinRT または Windows ランタイム C++ テンプレート ライブラリ (WRL) を使用してプログラミングする場合、データ メンバー フィールドのみが Point のメンバーとして存在し、.NET プロジェクションのユーティリティ メソッドまたはプロパティを使用することはできません。 C++ コードは、 PointHelper 静的クラスから使用できる同様のユーティリティ メソッドにアクセスできます。

次の表は、.NET と C++ で使用できる同等のメソッドを示しています。

.NET (ポイント) C++ (PointHelper)
Point(Double, Double) FromCoordinates(Single, Single)

フィールド

X

点の水平位置。

Y

点の垂直位置。

適用対象

こちらもご覧ください