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

时间:2015-04-21 09:55:31

标签: c# wpf

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

Sample image

所以我尝试使用ScaleTransform并将比例因子计算为10,将RenderTransformOrigin计算为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>

结果如下: Result control

1 个答案:

答案 0 :(得分:2)

您可以使用CroppedBitmap

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

或者您使用ImageBrush与适当的Viewbox

<Grid>
    <Grid.Background>
        <ImageBrush ImageSource="c:\temp\sample.bmp"
                    ViewboxUnits="Absolute" Viewbox="420,330,60,40"/>
    </Grid.Background>
</Grid>