2011-06-14 71 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