UIElement.RenderTransformOrigin 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得或設定 RenderTransform 宣告的任何可能渲染轉換的起點,相對於 UIElement 的界限。
public:
property Point RenderTransformOrigin { Point get(); void set(Point value); };
Point RenderTransformOrigin();
void RenderTransformOrigin(Point value);
public Point RenderTransformOrigin { get; set; }
var point = uIElement.renderTransformOrigin;
uIElement.renderTransformOrigin = point;
Public Property RenderTransformOrigin As Point
<uiElement RenderTransformOrigin="x,y"/>
屬性值
渲染轉換的起點。 預設值 為點數 為 0,0。
範例
這個 XAML 範例展示了如何在初始 XAML 的元素上設定 RenderTransformOrigin。 在初始預設 CompositeTransform 上運行的動畫,可以使用 RenderTransformOrigin 修改縮放與旋轉變換,使其套用到圓圈中心,而非預設的 0,0 座標原點。 這會讓圓看起來像是繞著中心旋轉,然後在原地收縮。
<Ellipse x:Name="e1" RenderTransformOrigin=".5,.5" Height="100" Width="100" Loaded="e1_Loaded_1">
<Ellipse.Fill>
<LinearGradientBrush>
<GradientStop Color="Red" Offset="0"/>
<GradientStop Color="Green" Offset="1"/>
</LinearGradientBrush>
</Ellipse.Fill>
<Ellipse.RenderTransform>
<CompositeTransform />
</Ellipse.RenderTransform>
<Ellipse.Resources>
<Storyboard x:Name="esb1" >
<DoubleAnimation RepeatBehavior="3x" Duration="0:0:3" From="0" To="360" Storyboard.TargetName="e1"
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)" />
<DoubleAnimation RepeatBehavior="1x" Duration="0:0:7" From="1" To="0" Storyboard.TargetName="e1"
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleX)" />
<DoubleAnimation RepeatBehavior="1x" Duration="0:0:7" From="1" To="0" Storyboard.TargetName="e1"
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" />
</Storyboard>
</Ellipse.Resources>
</Ellipse>
備註
RenderTransformOrigin 讓你能在不改變 RenderTransform 轉換細節的情況下,建立或更改特定元素的轉換效果。 你為 RenderTransformOrigin 指定的 點 值並非基於實際的像素測量。 相反地,它是一個 邏輯點,0,0 代表整個 UIElement 渲染區域的左上角,1,1 則代表右下角。 接著,將該值分解到 目前 UIElement 的座標空間中,將其計算成 X,Y 座標。
對某些變身來說,起源並不重要。 例如,RenderTransformOrigin 不會改變套用到 RenderTransform 屬性的 TranslateTransform 行為。
某些轉換類型具有其特定的性質,用以指定轉換的原點。 例如, RotateTransform 有 CenterX 和 CenterY。 當你使用 UIElement 時,視覺設計工具有時會隱藏這些屬性,讓你只使用 RenderTransformOrigin 來處理所有變換原點的變更,並保留變換專用原點作為預設。 工具也可以將所有變換效果套用到單一的 RenderTransform CompositeTransform 值,而不是為特定變換定義 XAML 元素並建立 TransformGroup。 如果你自己寫 XAML 或在程式碼中定義轉換,建議遵循相同的做法,例如在 RenderTransform 套用轉換時,務必使用 RenderTransformOrigin 而非轉換專用的原點值,否則這些值會互相錯位。
一種常見的技術是將 RenderTransformOrigin 設為 0.5、0.5,將原點置於元素中心。 接著你可以套用 RotateTransform 來將元素繞中心旋轉。
將 FlowDirection 改為 RightToLeft ,會改變 UIElement 中 RenderTransformOrigin 的 X 座標意義;0 會是右邊。
你用 RenderTransform 和 RenderTransformOrigin 能產生的一些視覺效果,也可以用 投影 和 平面投影來達成。 例如,你可以透過改變 PlaneProjection.RotationZ 來繞中心旋轉 UIElement。