2010-03-11 43 views
1

我有一個全屏應用程序,我希望能夠放大某些區域。關於縮放大場景的WPF性能

我的代碼工作正常,但我注意到當我靠近時,放大動畫(在父畫布上動畫ScaleTransform.ScaleXScaleTransform.ScaleY屬性)開始稍微下移,幀速率受到影響。

我不使用任何BitmapEffects或任何東西,理想情況下,我希望我的場景變得比現在更復雜。

場景相當大,1980x1024,這是一個要求,不能改變。

目前的佈局是這樣的:

<Canvas x:name="LayoutRoot"> 
    <Canvas x:Name="ContainerCanvas"> 
    <local:MyControl x:Name="c1" /> 
    <!-- numerous or ther controls and elements that compose the scene --> 
    </Canvas> 
</Canvas> 

是放大在短短的動畫ContainerCanvas,這在燕鷗,擴展其子,其給出預期效果的RenderTransform代碼。

但是,我想知道是否需要將ContainerCanvas換成ViewBox或類似的東西?我從來沒有真正使用ViewBox/Viewport控件在WPF之前,他們甚至可以幫助我在這裏?

平滑縮放是客戶端的一個巨大需求,我必須得到解決。

所有的想法,歡迎

非常感謝

馬克

回答

0

我看到它需要被放大並順利平移黑白影像類似的問題,但作爲黑白需要被反鋸齒使屏幕觀看可以接受。

很明顯,這種抗鋸齒可能會導致性能問題。你玩過RenderOptions.SetBitmapScalingMode()的圖像對象嗎?
如果是這樣,您可能必須在縮放動畫的速度/性能和渲染圖像的質量之間進行權衡。

一個可能的解決方案,我曾想過,但還沒來得及實施,將在動畫過程中切換到低品質的位圖的縮放模式,在動畫的最後切換回高品質。

+0

其實我們並沒有使用圖像,我們屏幕上的所有內容都是包含像矩形,橢圓等基於標準矢量的形狀的用戶控件......(但我不認爲應該有相當多的漸變填充效果成爲一個問題) – Mark 2010-03-12 00:52:58

+0

好的。這個問題聽起來很相似。在一天結束的時候,它是一個帶有內容的容器的RenderTransform。你是否發現,如果你放大,縮小和放大第二個縮放比較平滑的區域? – 2010-03-12 01:05:43

+0

尚未實現重新縮放:)我很快會通過並讓你知道,我的懷疑是,它會更順暢,雖然 – Mark 2010-03-12 01:13:59