2011-06-14 142 views
1

我想放大WPF并且图像视觉渲染是受约束的尺寸的项目控制内部的图像。WPF - 缩放图像(约束尺寸的项控制的内部)

例如:

<Canvas x:Name="m_canvas" MaxWidth="300" MaxHeight="300" > 
    <Image Source="..." 
     Width="300" 
     Height="300" /> 
</Canvas> 

变焦代码:

var matrix = ((MatrixTransform)m_image.RenderTransform).Matrix; 

var center = new Point(m_image.ActualWidth/2, m_image.ActualHeight/2); 
center = matrix.Transform(center); 

matrix.ScaleAt(delta.Scale.X, delta.Scale.Y, center.X, center.Y); 

((MatrixTransform)m_image.RenderTransform).Matrix = matrix; 

的问题是,当我缩放图像呈现大小去了帆布限制(300×300)大。我想如果图像只能放大画布。

我不想限制最大变焦,我想,如果图像的呈现大小是画布较大,这是留在里面。我不希望它重叠画布

回答

2

你可以夹到Canvas的界限:

<Canvas ClipToBounds="True" ...> 

但我不明白你为什么要摆在首位使用Canvas。这可能是因为有接近你的具体问题,而不需要硬编码的宽度和高度,没有任何Canvas都更加美好的方式。

+0

我使用的画布,因为我使用的是触摸屏事件,所以我注册到画布上的操纵事件 – Melursus 2011-06-14 14:58:01