我在尝试获取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();
}
谢谢!