我在寫一個WPF應用程序,它顯示最初居中的圖像。用戶可以放大/縮小並移動圖像,這些圖像使用ScaleTransform
和TranslateTransform
實現。這很好。如何防止WPF裁剪我的圖像?
問題是當圖像明顯大於窗口,並且用戶移動圖像或縮小到足以使整個圖像可見時。最初隱藏的圖像部分不會被渲染,而只會繪製圖像最初可見的部分。基於一些otherquestions
,如果我把我的形象Canvas
,這將導致整個圖像渲染,並在移動時它會被正確地渲染的內部。問題是我不希望我的圖像位於Canvas
中,因爲這會阻止發生任何其他佈局 - HorizontalAlignment
和VerticalAlignment
屬性會被忽略(因此圖像不再居中),而且我需要實現一個選項這將盡可能大地繪製圖像以填充不再起作用的窗口的整個區域(將Stretch
屬性設置爲UniformToFill
不做任何事情)。
目前這兩個轉換設置爲RenderTransform
屬性。如果我使用LayoutTransform
來代替整個圖像,但這也會阻止用戶將圖像的任何部分從窗口邊緣移出(這是我想保留的行爲)。
如何讓WPF始終呈現整個圖像而不使用Canvas
或LayoutTransform
?
這似乎確實工作得很好。有一件不起作用的東西(我承認在這個問題中忘了提及 - 對不起!)是因爲我的圖像有一個'RenderTransformOrigin'設置爲'0.5,0.5',因此縮放操作在圖像的中心。使用ScrollViewer放大圖像,最後聚焦在圖像的左上角。在這種情況下,是否有某種方法可以強制縮放操作在圖像的中心? – Andy 2013-02-26 17:15:52
Andy:http://stackoverflow.com/questions/6447114/how-to-keep-area-of-canvas-centered-in-a-scrollviewer-when-zoomed-in-or-out-and回答你的問題。 – Bas 2013-02-27 16:16:55
是的,這似乎工作得很好。我必須做出的唯一改變是爲了響應ScrollViewer的OnScrollChanged()而改變滾動偏移量,因爲在我的情況下滾動信息還沒有更新,並且我得到了一些奇怪的結果。謝謝您的幫助。 :) – Andy 2013-02-27 17:44:35