2

尝试在 WPF 中获取转换(旋转)元素的实际宽度时遇到问题。我在画布中有一个包含图像的矩形。当我旋转矩形时,我想让渲染的宽度在我的窗口中居中,但无论我如何尝试,我总是得到基本宽度。

我尝试使用 Width、ActualWidth、RenderSize.Width :完全相同的结果。我尝试使用 LayoutTransform 和 RenderTransform,同样如此。

我真的不明白我做错了什么,我读到的关于这个主题的所有内容都表明我应该使用 ActualWidth 来获取整个边界框的渲染宽度,而不是我的矩形/图像的默认宽度。

这是我的代码:

设置 scaleTransform :

    private ScaleTransform scaleT = new ScaleTransform();
    private RotateTransform rotateT = new RotateTransform();
    private TransformGroup tGroup = new TransformGroup();

    //Adding renderTransform
        scaleT.ScaleX = 1;
        scaleT.ScaleY = 1;
        rotateT.Angle = 0;
        tGroup.Children.Add(rotateT);
        tGroup.Children.Add(scaleT);
        imageContainer.RenderTransform = tGroup;

和旋转:

private void rotateWindow(string direction)
    {

        double prevWidth = this.Width;
        double prevHeight = this.Height;
        this.Width = prevHeight;
        this.Height = prevWidth;

        imageContainer.RenderTransformOrigin = new Point(0.5, 0.5);
        if (direction == "Right")
        {
            rotateT.Angle += 30;
        }
        if (direction == "Left")
        {
            rotateT.Angle -= 30;
        }

        adaptWindowToGrid();
    }

谢谢 !

4

0 回答 0