文章目錄
RenderTransformOrigin:擷取或設定由 RenderTransform 聲明的任何可能呈現轉換的中心點,相對於元素的邊界。 這是一個依賴項屬性。
命名空間: System.Windows
程式集: PresentationCore(在 PresentationCore.dll 中)
用於 XAML 的 XMLNS:http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation
- 對象中心點:用來定義所有RenderTransform變換中相對位置的的參考點,預設為圖形的左上即(0,0),該屬性值為相對值,即x和y方向的(0-1)分別指以本圖形所在矩形(在Expression blend中可以看到 )的長和寬 為參照的百分比 ,該屬性以圖形所在矩形預設狀態下左上方為參考
- 如:Roatetransform中的中心是相對於RenderTransformOrigin的,即在RenderTransformOrigin的基礎上進行疊加即得到絕對中心位置,其CenterX與CenterY易受ScaleTransform影響,如一矩形寬度為100,高度為200,要其繞中心旋轉,則其中心座標應為50,100. 倘若此時期ScaleTransform的ScaleX和ScaleY屬性別為1,2.(該種情況下與ScaleTransform中心點無關)則此時其高度變為原來2倍,即其中心變為50,100*2=200,計算公式:0.5*ScaleX*Width,0.5*ScaleY*Height(倘若不是取中心的情況則將0.5換為其他值)
使用 ScaleTransform 對象沿水平或垂直方向展開或收縮對象。ScaleX 屬性指定使對象沿 x 軸展開或收縮的量,ScaleY 屬性指定使對象沿 y 軸展開或收縮的量。縮放操作以 CenterX 和 CenterY 屬性指定的點為中心。
使用ScaleTransform之後左上方原始參考點的取得,Canvas.Left - CenterX/Width * (ScaleX - 1),Canvas.Top - CenterY/Height * (ScaleY - 1),TranslateTransform不受RenderTransform所定義的 相對位置影響(因為其本身為相對位置),也不影響TranslateTransform的作用.但他將影響與相對絕對參考點位置
備忘:
RenderTransformOrigin 以較為非標準的方式使用 Point 結構值,因為 Point 不表示座標系統中的絕對位置。 相反,0 和 1 之間的值被解釋為當前元素在每個 X 軸和 Y 軸上的範圍的因子。 例如,(0.5,0.5) 將使呈現轉換位於元素中心,而 (1,1) 會將呈現轉換置於元素的右下角。 NaN 不是一個接受的值。
也可以接受 0 和 1 以外的值,並且將導致更不尋常的轉換效果。 例如,如果將 RenderTransformOrigin 設為 (5,5),然後應用 RotateTransform,則旋轉點將位於元素自身邊界之外。 轉換將沿圓心遠在右下方的大圓旋轉元素。 原點可能位於其父元素的某處,並可能位於架構或視圖之外。 負點值與此類似,這將超出左上邊界。呈現轉換不影響布局,並且通常用於動畫處理或向元素應用臨時效果。