巨大的 WPF 视觉效果渲染不精确 - 有解决方案吗?

2024-03-25

在 WPF 中渲染巨大的视觉效果时,视觉效果会扭曲,并且随着坐标的增加扭曲得更加严重。我认为它与渲染管道中使用的浮点数据类型有关,但我不完全确定。无论哪种方式,我都在寻找解决问题的实际解决方案。

为了演示我正在讨论的内容,我创建了一个示例应用程序,其中仅包含嵌入在 ScrollViewer 中的自定义控件,用于绘制正弦曲线。

您可以在这里看到,对于双精度值

失真在 2^25 处变得更糟,因此失真会随着每增加一位而继续增加,直到仅绘制一些垂直线。

出于性能原因,我只是绘制图表的可见部分,但出于布局原因,我无法“虚拟化”控件,这将使这个问题变得过时。我能想到的唯一解决方案是将图形的可见部分绘制到位图,然后在适当的点渲染位图 - 但我再次遇到大值的精度问题,因为我无法准确地放置位图在我需要的位置。

有人知道如何解决这个问题吗?


这不是 WPF 的错。

浮点数离零越远,精度就越低 - 这是将巨大的数据范围(-Inf、+Inf)填充到 32(浮点)/ 64(双精度)位数据空间的成本。在 2^30 左右,浮点数实际上变得不如整数精确。

64 位整数具有恒定的间距 (1),但范围有限 -9,223,372,036,854,775,808 到 +9,223,372,036,854,775,807。

您也可以考虑使用 Decimal 类型(但其值范围也有限)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

巨大的 WPF 视觉效果渲染不精确 - 有解决方案吗? 的相关文章

随机推荐

  • 如何解决这个奇怪的Python编码问题?

    我正在对来自网络的字符串语料库执行一些 NLP 任务 正如您所期望的 存在编码问题 以下是一些示例 they don t serve sushi the apostrophe in don t is not standard but xe2
  • 未捕获的 PHP 异常 Doctrine\ORM\ORMException:“未知实体命名空间别名‘AppBundle’。”

    我刚刚开始使用 Composer 开始我的第一个项目 并想为其设置数据库和类 然而我被困住了 我在 prod log 中收到上述错误 我在这里遵循了本教程 http symfony com doc current book doctrine
  • printf 转换 long long 时出现问题

    我一直在研究一个项目欧拉问题 该问题本质上迫使您使用具有大存储空间的数据类型 include
  • Eclipse 未找到添加到构建路径的类(Java 动态 Web 项目)

    我正在接手学校的一个网络项目 我正在尝试在 eclipse 中部署该项目 该项目使用了一组库 即javax mail com sun mail org joda and org apache 该项目无法编译 因为它无法找到这些 我将它们放在
  • PowerShell 连接到 Postgres DB

    您能否告知是否有一种方法可以从 PowerShell 连接到 Postgres SQL DB 而无需安装任何数据库驱动程序 我正在寻找能够仅使用 NET 数据库功能进行连接的解决方案 谢谢 Matthew 根本不需要客户端驱动程序 您只需执
  • tidyverse 计算多列中每行的排名

    我有以下数据框 dat lt data frame id c a b c d x1 c 1 3 5 7 x2 c 4 2 6 0 x3 c 2 2 5 9 我现在想计算排名per row跨越我的三个 x 列 并希望将该结果存储到我的dat数
  • 自动将进入/退出功能日志添加到项目中

    我有一个第三方源代码 我必须对其进行调查 我想查看函数的调用顺序 但我不想浪费时间输入 printf Entered into s FUNCTION and printf Exited from s FUNCTION 对于每个函数 我也不想
  • mongodb获取计数而不重复查找

    在 MongoDb 中执行查询时 我需要获取所有匹配项的总数 以及作为有限 分页子集的文档本身 我可以通过两个查询来实现这一目标 但我不知道如何通过一个查询来实现这一目标 我希望有一个 mongo 功能 在某种意义上相当于 SQL CALC
  • 使用 Angularjs 将视图状态存储在 URL 中

    将视图状态存储为 URL 的一部分的一般共识是什么 如果有 Angularjs我该如何去做呢 我有一个相当复杂的视图 路线 有许多要设置的过滤器 选项卡等 这些都会导致视图状态 我看到了将所有这些视图组件的状态存储为 URL 的一部分的优势
  • 如何使用 python sub 删除

    我有一个 html 文件 我想用空格替换空段落 mystring This p p p is a test p p p p p result mystring sub p p nbsp 这是行不通的 Please 不要尝试使用正则表达式解析
  • 使用简单 PHP 代理的跨域 getJson 请求

    您好 我正在尝试从仅返回 JSON 而不是 JSONP 的 api 获取数据 每次我尝试以 JSONP 方式连接数据时 它都不起作用 因为我不期望 JSON 所以 我想我必须使用 PHP 代理来解决跨域问题 以便我可以解释 JSON 请求
  • 如何从 org.apache.spark.mllib.linalg.VectorUDT 转换为 ml.linalg.VectorUDT

    我正在使用 Spark cluster 2 0 我想将向量转换为org apache spark mllib linalg VectorUDT to org apache spark ml linalg VectorUDT Import L
  • 根据特定列从列表中删除重复行

    我相信这类似于this https stackoverflow com questions 25324066 distinct a list of records based on two column using groupby但我无法应
  • Rails Devise http 验证移动设备

    我正在尝试向我的服务器 ruby on Rails 应用程序验证 Android 客户端应用程序 该应用程序使用 Devise gem 但我尝试过 http 身份验证 并发布请求进行身份验证 并且服务器仅对任何给定的用户名 密码响应 200
  • 将具有不同列的大数据文件合并为一个大文件

    我有 N 个制表符分隔的文件 每个文件都有一个标题行 说明列的名称 有些列是所有文件共有的 但有些列是唯一的 我想将所有文件合并成一个包含所有相关标头的大文件 Example gt cat file1 dat a b c 5 7 2 3 9
  • 为 matplotlib 文本设置固定位置

    虽然有几个问题与我的问题类似 但几乎所有问题都与文本框 图例和注释有关 使用循环 我想显示 32 个属性的具体信息 左侧的直方图和右侧的统计信息 仅处理一个属性非常简单 我将 x y 设置为文本位置 就是这样 Histogram sns d
  • MKMapView释放内存

    我遵循了几个SO问题中提供的建议 例如this one https stackoverflow com questions 20138419 stop ios 7 mkmapview from leaking memory 为了释放MKMa
  • 使用批处理变量重命名文件

    我有以下代码 set DATE date echo DATE set DAY DATE 0 2 echo DAY rename file09 txt file DAY 09 txt pause 它应该重命名一个文本文件并将该月的日期放入文件
  • 创建电报 auth_key

    我最近开始使用 telegram api 在第一阶段 我提出了接收请求auth key 这是我的 C 代码 auth key id in unencrypted message is ZERO Int64 auth key id 0 thi
  • 巨大的 WPF 视觉效果渲染不精确 - 有解决方案吗?

    在 WPF 中渲染巨大的视觉效果时 视觉效果会扭曲 并且随着坐标的增加扭曲得更加严重 我认为它与渲染管道中使用的浮点数据类型有关 但我不完全确定 无论哪种方式 我都在寻找解决问题的实际解决方案 为了演示我正在讨论的内容 我创建了一个示例应用