UIElement.TransformToVisual(UIElement) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
public:
virtual GeneralTransform ^ TransformToVisual(UIElement ^ visual) = TransformToVisual;
GeneralTransform TransformToVisual(UIElement const& visual);
public GeneralTransform TransformToVisual(UIElement visual);
function transformToVisual(visual)
Public Function TransformToVisual (visual As UIElement) As GeneralTransform
パラメーター
戻り値
オブジェクトとしての変換情報。 実際の変換を取得するには、このオブジェクトのメソッドを呼び出します。
例
この例では、 を呼び出 TransformToVisual
して、イベント送信者ではない要素の座標参照フレーム内の PointerPoint からの座標を解釈するシナリオを示します。 ここでは、メソッドは queryPointer
最初に送信者に関連する座標にアクセスしますが、後で を使用 TransformToVisual
して、XAML ツリーの上位にある複数の包含レイヤーであるレイアウト コンテナーの参照フレーム page
にポイント座標を変換します。 このコードのその他のコンテキストを確認するには (UI での結果の表示方法 queryPointer
と呼び出し時の表示を含む)、トピック「 ポインター入力を処理する」に示されている完全なコード例を参照してください。
<Page
x:Class="PointerInput.MainPage"
IsTabStop="false"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:PointerInput"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Name="page">
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="150" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="320" />
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Canvas Name="Container"
Grid.Column="0"
Grid.Row="1"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,0,0,0"
Height="320" Width="640">
<Rectangle Name="Target"
Fill="#FF0000"
Stroke="Black"
StrokeThickness="0"
Height="320" Width="640" />
</Canvas>
<TextBox Name="eventLog"
Grid.Column="1"
Grid.Row="0"
Grid.RowSpan="3"
Background="#000000"
TextWrapping="Wrap"
Foreground="#FFFFFF"
ScrollViewer.VerticalScrollBarVisibility="Visible"
BorderThickness="0"/>
</Grid>
</Page>
String queryPointer(PointerPoint ptrPt)
{
String details = "";
switch (ptrPt.PointerDevice.PointerDeviceType)
{
case Windows.Devices.Input.PointerDeviceType.Mouse:
details += "\nPointer type: mouse";
break;
case Windows.Devices.Input.PointerDeviceType.Pen:
details += "\nPointer type: pen";
if (ptrPt.IsInContact)
{
details += "\nPressure: " + ptrPt.Properties.Pressure;
details += "\nrotation: " + ptrPt.Properties.Orientation;
details += "\nTilt X: " + ptrPt.Properties.XTilt;
details += "\nTilt Y: " + ptrPt.Properties.YTilt;
details += "\nBarrel button pressed: " + ptrPt.Properties.IsBarrelButtonPressed;
}
break;
case Windows.Devices.Input.PointerDeviceType.Touch:
details += "\nPointer type: touch";
details += "\nrotation: " + ptrPt.Properties.Orientation;
details += "\nTilt X: " + ptrPt.Properties.XTilt;
details += "\nTilt Y: " + ptrPt.Properties.YTilt;
break;
default:
details += "\nPointer type: n/a";
break;
}
GeneralTransform gt = Target.TransformToVisual(page);
Point screenPoint;
screenPoint = gt.TransformPoint(new Point(ptrPt.Position.X, ptrPt.Position.Y));
details += "\nPointer Id: " + ptrPt.PointerId.ToString() +
"\nPointer location (parent): " + ptrPt.Position.X + ", " + ptrPt.Position.Y +
"\nPointer location (screen): " + screenPoint.X + ", " + screenPoint.Y;
return details;
}
注釈
UI 内の 2 つの要素間の座標オフセットを取得するために を呼び出 TransformToVisual
します。 考慮される最初の要素は UIElement で、 TransformToVisual
2 番目の要素は UIElement
パラメーターとして渡す visual
要素です。 たとえば、 変換を使用して、要素の境界が、アプリのウィンドウではなく、レイアウトの親要素に対して相対的な座標系でどのように配置されるかを決定できます。
TransformToVisual
は、RenderTransform などのレンダリングや配置に影響を与えるすべての考慮事項が適用された後に座標結果を提供します。 これは、 またはその他の位置の変更のアニメーション RenderTransform
中に取得されたポイント値を処理する場合に便利です。
最も一般的なシナリオ TransformToVisual
は、呼び出した UIElement を基準にしてローカル座標系を使用し、 Point 値をオブジェクトの参照フレームに変換するためのイベント データ メソッドを持つリアルタイム入力イベントを処理しない場合です。 を呼び出TransformToVisual
した後、返された GeneralTransform で TransformPoint を呼び出すことができます。
注意
このメソッドによって返される GeneralTransform オブジェクトは、派生型 Transform にキャストできますが、必要なすべてのメソッドは によって GeneralTransform
定義されます。 変換結果が翻訳であると予想される場合でも 、TranslateTransform にキャストすることはできません。