C# WPF-如何缩放图像中的特定区域

C# WPF-如何缩放图像中的特定区域,c#,wpf,C#,Wpf,我想在WPF控件中显示图像的特定区域。 假设原始图像的尺寸是600x400,我试图在图像中显示一个矩形,位于X=420,Y=330,宽度=60,高度=40 因此,我尝试使用ScaleTransform并将比例因子计算为10,将renderTransferorMorigin计算为0.75,0.85 但是当我查看控件时,我没有得到我期望的图像。(仅红色矩形) 代码如下: <Grid> <Button Width="600" Height="400">

我想在WPF控件中显示图像的特定区域。 假设原始图像的尺寸是600x400,我试图在图像中显示一个矩形,位于X=420,Y=330,宽度=60,高度=40

因此,我尝试使用ScaleTransform并将比例因子计算为10,将renderTransferorMorigin计算为0.75,0.85

但是当我查看控件时,我没有得到我期望的图像。(仅红色矩形)

代码如下:

<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>

结果是:

您可以使用
裁剪位图

<Image>
    <Image.Source>
        <CroppedBitmap Source="c:\temp\sample.bmp" SourceRect="420,330,60,40"/>
    </Image.Source>
</Image>

您是否需要更改动态焦点区域(大小、位置)?@dymanoid是的,我需要在运行时更改它(图像和焦点区域)
<Grid>
    <Grid.Background>
        <ImageBrush ImageSource="c:\temp\sample.bmp"
                    ViewboxUnits="Absolute" Viewbox="420,330,60,40"/>
    </Grid.Background>
</Grid>