我有画有孩子图像的画布。这是我的XAML:使用WPF在画布中合适的图像
<Canvas x:Name="ImageArea" ClipToBounds="True">
<Image x:Name="BigImage" RenderTransformOrigin="0.5,0.5">
<Image.RenderTransform>
<TransformGroup>
<RotateTransform x:Name="ImageRotateTransform" Angle="0"/>
<ScaleTransform x:Name="ImageScaleTransform" ScaleX="1" ScaleY="1"/>
<TranslateTransform x:Name="ImageTranslateTransform" X="0" Y="0"/>
</TransformGroup>
</Image.RenderTransform>
</Image>
</Canvas>
我想在画布上,以适应这个图像与此代码:
var fitSize = Math.Max(BigImage.ActualHeight, BigImage.ActualWidth);
var targetSize = Math.Min(ImageArea.ActualHeight, ImageArea.ActualWidth);
var ratio = targetSize/fitSize;
ImageScaleTransform.ScaleX = ImageScaleTransform.ScaleY = ratio;
ImageTranslateTransform.X =
fitSize == BigImage.ActualWidth ?
0 : ImageArea.ActualWidth/2 - BigImage.ActualWidth*ratio/2;
ImageTranslateTransform.Y =
fitSize == BigImage.ActualHeight ?
0 : ImageArea.ActualHeight/2 - BigImage.ActualHeight * ratio/2;
此代码计算缩放比例,然后尝试根据它的大小,居中图像。 问题是平移变换的X和Y坐标是正确计算的,但图像而不是按预期定位(仅在画布的底部可见的图像的一小部分)。如果将RenderTransformOrigin设置为0,0
图像定位正常。
我错在哪里?