我有一个简单的应用程序,由一个包含画布(rootCanvas)的窗口组成。我正在尝试添加另一个画布(测试),并将不同的转换应用到子画布的LayoutTransform中。所有这些都是以编程方式完成的,而不是使用XAML。
有些转换是有效的,而另一些则不是这样的:
守则如下:
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
发布于 2012-08-21 12:16:45
请阅读FrameworkElement.LayoutTransform性质中的备注。
然而,LayoutTransform忽略了TranslateTransform操作。
使用UIElement.RenderTransform性质应用TranslateTransform。
https://stackoverflow.com/questions/12054349
复制相似问题