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 則是指右下角。 然後,值會評估為 X,Y 座標,方法是將它分解成 UIElement的目前座標空間。
對於某些轉換,原點並不重要。 例如,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 產生的一些相同視覺效果,也可以使用 Projection 和 PlaneProjection來達成。 例如,您可以變更PlaneProjection.RotationZ,將UIElement繞著其中心旋轉。