如何缩放图像中的特定区域

如何缩放图像中的特定区域

本文介绍了WPF-如何缩放图像中的特定区域的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在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 的I​​mageBrush


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-如何缩放图像中的特定区域的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-05 13:47