我有一个简单的应用程序,包含一个Canvas(rootCanvas)的窗口。我试图将另一个Canvas(test)添加到其中,并对子画布的LayoutTransform应用不同的变换。这一切都是通过编程而非使用XAML来完成的。
一些变换起作用了,而其他变换则没有如下所示:
- 当LayoutTranform设置为RotateTransform时,它按预期工作。 - 当它设置为TranslateTransform时,平移似乎没有应用,test Canvas仍位于rootCanvas的左上角。 - 当它设置为通过先应用旋转再应用平移构建的MatrixTransform时,只有旋转被应用。
以下是代码:
我希望有人能解释一下我在这里做错了什么,因为我不明白为什么翻译似乎没有按我期望的那样运作。
一些变换起作用了,而其他变换则没有如下所示:
- 当LayoutTranform设置为RotateTransform时,它按预期工作。 - 当它设置为TranslateTransform时,平移似乎没有应用,test Canvas仍位于rootCanvas的左上角。 - 当它设置为通过先应用旋转再应用平移构建的MatrixTransform时,只有旋转被应用。
以下是代码:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Canvas rootCanvas = (Canvas)Application.Current.Windows[0].FindName("canvas1");
Canvas test = new Canvas();
test.Width = 10;
test.Height = 10;
test.Background = Brushes.Aqua;
// this works
//test.LayoutTransform = new RotateTransform(45);
// this doesn't
//test.LayoutTransform = new TranslateTransform(40, 40);
// only the rotate part of this works
Matrix matrix = new Matrix();
matrix.Rotate(45);
matrix.Translate(40, 40);
test.LayoutTransform = new MatrixTransform(matrix);
rootCanvas.Children.Add(test);
}
}
我希望有人能解释一下我在这里做错了什么,因为我不明白为什么翻译似乎没有按我期望的那样运作。
提前感谢您,
Wibbs