首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将画布子LayoutTransform设置为TranslateTransform或MatrixTransform时不工作的转换

将画布子LayoutTransform设置为TranslateTransform或MatrixTransform时不工作的转换
EN

Stack Overflow用户
提问于 2012-08-21 11:57:51
回答 1查看 4.4K关注 0票数 9

我有一个简单的应用程序,由一个包含画布(rootCanvas)的窗口组成。我正在尝试添加另一个画布(测试),并将不同的转换应用到子画布的LayoutTransform中。所有这些都是以编程方式完成的,而不是使用XAML。

有些转换是有效的,而另一些则不是这样的:

  • 当LayoutTranform设置为RotateTransform时,它将按预期工作。
  • 当它被设置为一个TranslateTransform时,翻译似乎没有被应用,并且测试画布仍然位于rootCanvas的上角。
  • 当将其设置为通过应用旋转和平移而构造的MatrixTransform时,似乎只应用了旋转。

守则如下:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-21 12:16:45

请阅读FrameworkElement.LayoutTransform性质中的备注。

然而,LayoutTransform忽略了TranslateTransform操作。

使用UIElement.RenderTransform性质应用TranslateTransform

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12054349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档