问题描述
我想在WPF控件中显示图像的特定区域。
假设原始图片尺寸为600x400,我正在尝试在该图片中显示一个矩形,该矩形位于X = 420,Y = 330,宽度= 60,高度= 40。
I want to show a specific area of an image in my WPF control.Let's say the original image dimensions are 600x400 and I'm trying to show a rectangle inside that image, positioned on X=420,Y=330 with width=60, height=40.
因此,我尝试使用ScaleTransform并将比例因子计算为10,并将RenderTransformOrigin设置为0.75,0.85。
So I tried to use ScaleTransform and calculate the scale factor as 10, and the RenderTransformOrigin to 0.75, 0.85.
但是当我查看控件时,我没有得到我期望的图像。 (仅红色矩形)。
But when I view the control I don't get the image I expected. (only the red rectangle).
代码是:
<Grid>
<Button Width="600" Height="400">
<Button.Template>
<ControlTemplate>
<Grid ClipToBounds="True">
<Image Source="c:\temp\sample.bmp" Stretch="Uniform" RenderTransformOrigin="0.75, 0.85">
<Image.RenderTransform>
<ScaleTransform ScaleX="10" ScaleY="10" />
</Image.RenderTransform>
</Image>
</Grid>
</ControlTemplate>
</Button.Template>
</Button>
</Grid>
结果为:
That the result:
推荐答案
您可以使用 CroppedBitmap
:
<Image>
<Image.Source>
<CroppedBitmap Source="c:\temp\sample.bmp" SourceRect="420,330,60,40"/>
</Image.Source>
</Image>
或者您使用带有适当的
: Viewbox
的ImageBrush
Or you use an ImageBrush
with an appropriate Viewbox
:
<Grid>
<Grid.Background>
<ImageBrush ImageSource="c:\temp\sample.bmp"
ViewboxUnits="Absolute" Viewbox="420,330,60,40"/>
</Grid.Background>
</Grid>
这篇关于WPF-如何缩放图像中的特定区域的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!