我有一个与图片框关联的轨迹栏,我根据所选的缩放系数绘制图像。范围从1%到1,000%,因此滑动越低,缩小的速度就越快。
这是预期的,但不是所希望的。有没有办法缩放解释滑块值,以便缩放对用户来说更自然,特别是在< 50%的范围。
答案 0 :(得分:0)
这很容易做到:
myTrackBar.Minimum = 0;
myTrackBar.Maximim = 3000;
...
public double RealValue
{
get
{
var trackPos = myTrackBar.Value;
return Math.Pow(10.0, trackPos / 1000.0);
}
set
{
var logValue = Math.Log10(value) * 1000;
myTrackBar.Value = (int) logValue;
}
}
要了解其工作原理,请考虑您的范围 - 1到1000,或表示为10的幂,它是1e0到1e3。因此,如果我们给轨迹栏一个0到3的范围并将值提高到10,我们就会得到一个很好的指数值集,就像你想要的那样。
但是如果我们将范围设置为0..3,我们只能从4个不同的值中选择:0,1,2,3,它们将分别转换为1,10,100和100。
为了给我们中间的值,我们简单地将范围乘以一千,给我们3001个不同的值,轨迹栏可以跟踪,然后将轨迹栏的值除以千。