当在WPF中渲染巨大的视觉效果时,视觉会随着坐标的增加而变形并扭曲。我认为它与渲染管道中使用的浮点数据类型有关,但我不完全确定。无论哪种方式,我正在寻找解决问题的实用解决方案。不赞成渲染巨大的WPF视觉效果 - 任何解决方案?
为了演示我在说什么,我创建了一个示例应用程序,它只包含嵌入ScrollViewer中的自定义控件,该控件绘制正弦曲线。
你可以在这里看到,图纸是不行了双重价值< = 2^24(在这种情况下,水平坐标值),但是从它这一点被扭曲。
失真得到在2^25恶化等失真继续增加每增加一点,直到它只是得出了一些垂直线。
由于性能方面的原因,我只画出了图形的可见部分,但出于布局的原因,我不能“虚拟化”使这个问题过时的控件。我能想到的唯一解决方案是将图形的可见部分绘制到位图上,然后在适当的位置渲染位图 - 但在那里我再次遇到大值的精度问题,因为我无法准确放置位图在我需要的位置。
有没有人有一个想法如何解决这个问题?
谢谢,但我从来没有说过它是WPF的错 - 我只是在寻找解决方法。我熟悉浮动和整数是如何工作的,因此我猜想这可能是问题所在。我从2^24开始就遇到了精度问题,并且我记得曾经在某处读过实际的硬件渲染发生在单精度上......但切换到软件渲染器并没有什么区别。我也不能考虑使用Decimal类型,因为WPF API使用double,所以这是我必须坚持的。 – 2010-10-24 19:20:27