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