gpt4 book ai didi

wpf - 将其 LayoutTransform 设置为 TranslateTransform 或 MatrixTransform 时,Canvas 子项的翻译不起作用

转载 作者:行者123 更新时间:2023-12-03 16:46:10 24 4
gpt4 key购买 nike

我有一个简单的应用程序,它由一个包含 Canvas (rootCanvas) 的 Window 组成。我正在尝试为此添加另一个 Canvas (测试)并将不同的变换应用于子 Canvas 的 LayoutTransform。这一切都是以编程方式完成的,而不是使用 XAML。

一些转换正在工作,而另一些则不如下:

  • 当 LayoutTranform 设置为 RotateTransform 时,它的作用是
    预期的。
  • 当它设置为 TranslateTransform 时,翻译不会出现
    被应用,并且测试 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);
    }
    }

    如果有人能解释我在这里做错了什么,我将不胜感激,因为我不明白为什么翻译似乎没有像我预期的那样工作。

    提前致谢,

    威布斯

    最佳答案

    请阅读FrameworkElement.LayoutTransform Property中的备注.

    However, LayoutTransform ignores TranslateTransform operations.



    使用 UIElement.RenderTransform Property申请 TranslateTransform .

    关于wpf - 将其 LayoutTransform 设置为 TranslateTransform 或 MatrixTransform 时,Canvas 子项的翻译不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12054349/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com