我有大约3-4个画布控件,每个控件包含大约750-1200个路径。 用户需要对它们进行一些转换,我将其用于全局
Canvas SelectedCanvas;
最初(在构造函数中)SelectedCanvas获取我的画布控件的值。
SelectedCanvas = canvas1;
对于旋转画布的按钮,我使用下一个函数:
private void RotateRightLayerButton_Click(object sender, RoutedEventArgs e)
{
if (SelectedCanvas.RenderTransform != null)
{
//method 1
CompositeTransform ct = canvas1.RenderTransform as CompositeTransform;
if (ct.Rotation == 360)//ct will return NullException
ct.Rotation = 0;
ct.Rotation += 30;
// method 2
TransformGroup tg = canvas1.RenderTransform as TransformGroup;
(tg.Children[0] as RotateTransform).Angle += 30;
//tg will return NullException
}
}
我也试过this link和
this link
但我还需要获得RenderTransform
的值。
难道我做错了什么?提前谢谢!
答案 0 :(得分:1)
RenderTransform属性的默认值为Transform.Identity。您必须应用转换,例如一个RotateTransform,在你可以操作它之前到你的画布。
如果您使用RotateTransform,您的代码必须如下所示:
RotateTransform t = bd1.RenderTransform as RotateTransform;
if (t.Angle >= 360)
t.Angle = 0;
t.Angle += 30;
或:
RotateTransform t = bd1.RenderTransform as RotateTransform;
t.Angle = (t.Angle + 30) % 360;