hel*_*ker 7 algorithm scaling zooming rulers
我正在使用 C#/WPF 设计(而不是编程)用于医疗数据的数据系列查看器程序。有一个显示数据的主面板,具有常见的鼠标平移/缩放功能(左拖动平移、水平滚动缩放、双击垂直自动适应、右拖动选择)。
问题是:我需要在顶部/左侧带有标尺的垂直和水平网格,类似于在音频编辑(goldwave、audacity)、制图(gpsTrackmaker)和 ilustration(photoshop、inkscape)程序中看到的那些。此外,这些标尺甚至可以在大多数绘图 API(Matlab、GNUPlot、Matplotlib)甚至办公程序(Excel、Calc)中进行配置。
除了始终与内容对齐和缩放外,主要的必要条件是拥有一种“抗杂乱”算法,该算法仅以可能的最大粒度绘制刻度标签,而标签不会相互“碰撞”或隐藏。
下图显示了 Inkscape 上同一绘图的两个缩放级别。第一行显示每百个标签。第二行显示每个十年的标签。
问题是:“由于这(查看标尺的自动分辨率)似乎是许多程序中已解决的问题,我应该如何查找/可用的资源/教程是什么,以便我可以指定和实现这样一个适合的控件我的需求?”
我将不胜感激任何建议或示例,最好使用 C#,但可以使用任何语言。

n = W/w (您可以显示的最大标签数)
x = X*w/W (两个标签之间的最小范围)
然后,您必须将 x 舍入到任何数量级的更大、更冷的值 1、2 或 5。
例如
x=18.4 => x1=20x=539 => x1=1000w1 = x1/X*W (标签宽度或刻度之间的间距)
n1 = W/w1 (滴答数)