Wpf Width,ActualWidth和RenderSize结果相同

时间:2017-03-10 13:11:07

标签: c# wpf windows actualwidth rendertransform

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

我尝试使用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();
    }

谢谢!

0 个答案:

没有答案