我使用TrackBar控件表示时间范围-每小时对应于TrackBar上的一个勾号。我在TrackBar下方还有一个面板,其中包含代表与小时相关的事件的图标。我必须将图标放置在TrackBar的相应刻度下。这里的问题是计算刻度之间的像素距离。
我去检查并在TrackBarRenderer.cs中找到以下代码。
float inc = ((float)bounds.Width - lineWidth) / ((float)numTicks - 1);
...
float x = bounds.X + ((float)(numTicks - 1)) * inc;
“ inc”变量是刻度之间的距离,而“ x”是每个刻度位置。 “ numTicks”很容易说明,“ lineWidth”是值为“ 2”的硬编码常量。
我使用了“ inc”公式,并且进行了一些细微的更改,因此我能够在运行Windows 7的计算机上准确无误地计算每个刻度的位置。但是,当我在Windows 10上启动程序时,位置误差也很大即使使用0-10 TrackBar也很明显。
是否有适用于每个Windows版本的解决方案?