gpt4 book ai didi

绘图仪GUI组件中标尺自缩放算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:12:31 26 4
gpt4 key购买 nike

我正在使用 C#/WPF 设计(而非编程)医疗数据的数据系列查看器程序。有一个显示数据的主面板,具有常见的鼠标平移/缩放功能(左键拖动平移、滚动水平缩放、双击垂直自动调整、右键拖动选择)。

问题是:我需要在顶部/左侧带有标尺的垂直和水平网格,类似于在音频编辑(goldwave、audacity)、制图(gpsTrackmaker)和插画(photoshop、inkscape)程序中看到的网格。此外,这些标尺甚至可以在大多数绘图 API(Matlab、GNUPlot、Matplotlib)甚至办公程序(Excel、Calc)中配置。

除了始终根据内容对齐和缩放之外,主要要求是拥有一种“反困惑”算法,该算法仅绘制具有最大可能粒度的刻度标签,而标签不会“碰撞”或相互隐藏。

下图显示了 Inkscape 上同一绘图的两个缩放级别。第一行显示每百个标签。第二行显示每个十年的标签。

问题是:“由于这个(查看标尺的自动分辨率)似乎是许多程序中已解决的问题,我应该如何寻找/可用的资源/教程是什么,以便我可以指定和实现这样一个适合我需要的控件?”

我将不胜感激任何建议或示例,最好使用 C#,但可以使用任何语言。

enter image description here

最佳答案

  • W = 标尺的可见部分
  • X = W 表示的范围(右-左)
  • w = 标签宽度

n = W/w(可以显示的最大标签数)

x = X*w/W(两个标签之间的最小范围)

然后您必须将 x 舍入为任何大小的更大、更冷的值 1、2 或 5。

例如

  • x=18.4 => x1=20
  • x=539 => x1=1000

w1 = x1/X*W(标签宽度,或刻度之间的间距)

n1 = W/w1(刻度数)

关于绘图仪GUI组件中标尺自缩放算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9009265/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com