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 指的是右下角。 然後,值會藉由將其分解為 UIElement的目前座標空間,以評估為 X,Y 座標。

對於某些轉換,原點並不重要。 例如,RenderTransformOrigin 不會變更套用至RenderTransform 屬性的 TranslateTransform行為。

某些轉換類型有自己的屬性,可指定轉換的來源。 例如, RotateTransform 具有 CenterXCenterY。 當您使用 UIElement時,視覺設計工具有時會隱藏這些其他屬性,因此您只對所有轉換原始來源變更使用 RenderTransformOrigin,並將轉換特定原始來源保留為預設值。 工具也可以將所有轉換效果套用至RenderTransform 的單一 CompositeTransform值,而不是定義特定轉換的 XAML 元素,以及建立TransformGroup 如果您要撰寫自己的 XAML 或在程式碼中定義轉換,您可以考慮遵循這些相同的做法,以便一律使用 RenderTransformOrigin,而不是套用 RenderTransform的轉換,而不是轉換特定的原始值,否則這些值會彼此位移。

常見的技巧是將 RenderTransformOrigin 設定為 0.5,0.5,將原點置於專案中心。 然後,您可以套用 RotateTransform 以繞著中心旋轉元素。

FlowDirection 變更為 RightToLeft 會變更 UIElement之 RenderTransformOrigin X 座標的意義;0 會是右邊緣。

您可以使用 RenderTransform 和 RenderTransformOrigin 產生的一些相同視覺效果,也可以透過 投影PlaneProjection來達成。 例如,您可以藉由變更PlaneProjection.RotationZ,在UIElement 周圍旋轉 UIElement

適用於

另請參閱