我有一个全屏应用,我希望能够放大某些区域。
我的代码运行正常,但我注意到当我靠近时,放大动画(在父画布上激活ScaleTransform.ScaleX
和ScaleTransform.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
设置动画,然后在其中缩放其子项,从而产生所需的效果。
然而,我想知道我是否需要为ViewBox或类似的东西换掉ContainerCanvas?我以前在WPF中从未真正使用ViewBox / Viewport控件,他们甚至可以帮助我吗?
平滑缩放是客户的一项巨大要求,我必须解决这个问题。
欢迎所有想法
非常感谢
标记
答案 0 :(得分:0)
我看到类似的问题需要缩放和平滑平移的双色调图像,但是需要消除锯齿以使屏幕观看可接受。
显然,这种抗锯齿可能会导致性能问题。您是否使用RenderOptions.SetBitmapScalingMode()
来播放正在显示的图像对象?
如果是这样,您可能需要在缩放动画的速度/性能与渲染图像的质量之间进行权衡。
我想到的一个可能的解决方案,但还没有时间实现,将在动画期间切换到低质量的位图缩放模式,并在动画结束时切换回高质量。