我在Canvas
上創建了具有彎曲邊緣的Path
對象。我希望能夠旋轉它們並在畫布周圍移動它們。但是,當我嘗試應用幾個變換和對象它只能直觀地顯示最後一個。我假設它是因爲變換應用於Path
對象的座標,並且僅顯示,但之後未保存。是否可以將RenderTransform應用於實際的UIElements?
所以,如果我可以運行類似:
my_canvas.Children[0].RenderTransform = new TranslateTransform(0, 100);
my_canvas.Children[0].RenderTransform = new TranslateTransform(0, 150);
它會向下移動我的Path
150像素。
有沒有一種方法可以保存RenderTransform
的變換進度,還是我必須用不同的參數重新創建我的Path
/編寫一種方法手動取代像素?
編輯
又如:
my_canvas.Children[0].MouseDown += (object sender, MouseButtonEventArgs e) =>
{
if (e.LeftButton == MouseButtonState.Pressed)
{
MouseDownLocation = e.GetPosition(my_canvas);
}
};
my_canvas.Children[0].MouseMove += (object sender, MouseEventArgs e) =>
{
if (e.LeftButton == MouseButtonState.Pressed)
{
my_canvas.Children[0].RenderTransform = new TranslateTransform(-(MouseDownLocation.X - e.GetPosition(my_canvas).X), -(MouseDownLocation.Y - e.GetPosition(my_canvas).Y));
}
};
此代碼可以讓我將我的元素,它工作得很好:我可以把它撿起來,直觀的移動它,讓它去。但只有一次。如果再試一次,它會嘗試根據元素之前的位置進行轉換。而當我打字時,我意識到我可以通過跟蹤轉換造成的偏移來解決這個問題。
也許[此](https://stackoverflow.com/questions/45208505/is-it-good-practice-to-position-uielements-via-rendertransform)可以幫助你。只需看一看:) – 2017-10-20 20:01:27
將變換分配給UIElement的RenderTransform屬性時,顯然會替換先前分配的值。如果您想一次應用多個轉換,請將它們添加到TransformGroup並將其分配一次到RenderTransform。然後重用TransformGroup的現有元素。請參見[如何將多個變換應用於對象](https://docs.microsoft.com/en-us/dotnet/framework/wpf/graphics-multimedia/how-to-apply-multiple-transforms-to-an -目的)。 – Clemens
@Clemens我希望不僅能夠應用多個變換,而且能夠基於元素最終作爲前一個變換的結果應用它們,如果這樣做有任何意義。爲此,我需要實際更改元素的座標。有沒有一種方法可以實現這一點? –