首页 文章

是否所有WPF渲染变换都以双精度运行?

提问于
浏览
1

WPF以双精度存储其所有数据 . 我只想确认所有变换等以双精度运行 .

我正在制作一个非常大的(40,000,000 x 40,000,000)WPF画布,进行平移和缩放以放大它 - 将瓷砖放在包含卫星图像的瓷砖上 . 要缩放和翻译我正在使用包含ScaleTransform和TranslateTransform的TransformGroup .

当你近距离放大时,当你略微调整尺度变换时,瓷砖似乎会摇摆不定,就好像它们在画布上的位置略有变化一样,即使我正在改变的是尺度变换 . 我担心转换不是以双精度完成的,而是以单精度的方式运送到硬件上 .

有没有办法控制渲染变换的精度?或者至少确认它使用的是双精度而不是单精度?

谢谢 .

1 回答

  • 3

    前段时间,我注意到了完全相同的事情:使用极端变换时渲染的位图会严重失真 . 我之后做的一些测试让我确信WPF确实将转换转发到GPU,后者使用单精度处理而不是双精度处理 .

    我找到的唯一解决方法是简化转换 . 例如,不是给图像大小为100,000乘100,000单位,比例因子为0.0001,而是给它一个1单位的大小和10的比例因子 . 翻译也是如此 .

    根据您的设计,这可能意味着您的布局逻辑将变得更加复杂,因为您必须手动执行一些WPF将为您执行的计算 . 对于允许大范围缩放级别的应用程序(例如从整个地球视图到单个建筑物),似乎没有别的办法 .

相关问题