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 的 Point 。
範例
這個 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 指定的 Point 值不是以實際圖元量值為基礎。 相反地,它是 邏輯點,其中值為 0,0 是指整體 UIElement 轉譯區域的左上角,而 1,1 指的是右下角。 然後,值會藉由將其分解為 UIElement的目前座標空間,以評估為 X,Y 座標。
對於某些轉換,原點並不重要。 例如,RenderTransformOrigin 不會變更套用至RenderTransform 屬性的 TranslateTransform行為。
某些轉換類型有自己的屬性,可指定轉換的來源。 例如, RotateTransform 具有 CenterX 和 CenterY。 當您使用 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。