UIElement.RenderTransformOrigin 屬性

定義

取得或設定 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 座標原點。 這會讓圓看起來像是繞著中心旋轉,然後在原地收縮。

Note

要開始動畫,你需要從 資源庫 取出並呼叫 開始;該代碼未被顯示。

<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 行為。

某些轉換類型具有其特定的性質,用以指定轉換的原點。 例如, RotateTransformCenterXCenterY。 當你使用 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

適用於

另請參閱