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 的 Point

範例

這個 XAML 範例示範如何在初始 XAML 中的 元素上設定 RenderTransformOrigin。 一開始在預設 CompositeTransform 上執行的動畫可以使用 RenderTransformOrigin 來修改縮放和旋轉轉換,以套用至圓形的中心,而不是預設的 0,0 座標原點。 這會使它看起來像圓形繞著其中心旋轉,並就地縮小。

注意

若要啟動動畫,您必須從 資源 擷取動畫,並呼叫 Begin;未顯示該程式碼。

<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 指定的 Point 值不是以實際圖元量值為基礎。 相反地,它是 邏輯點,其中值 0,0 是指整體 UIElement 轉譯區域的左上角,而 1,1 則是指右下角。 然後,值會評估為 X,Y 座標,方法是將它分解成 UIElement的目前座標空間。

對於某些轉換,原點並不重要。 例如,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 產生的一些相同視覺效果,也可以使用 ProjectionPlaneProjection來達成。 例如,您可以變更PlaneProjection.RotationZ,將UIElement繞著其中心旋轉。

適用於

另請參閱