我无法获得带状线大小的正确值

时间:2016-08-12 14:18:49

标签: c# .net charts

我目前正在开发一个模块来创建图表以显示数据。 我使用System.Windows.Forms.DataVisualization.Charting.Chart

我有两条带状线,即使我为StripWidth参数赋予它们相同的值:

我们的MaxY为6000,平均值为2300,阈值为2500

// We can't use a fixed size because if the y axis is too high or too small it may look too big or too small
this.chart1.ChartAreas[0].Axes[1].StripLines[0].StripWidth = maxY / 100;
this.chart1.ChartAreas[0].Axes[1].StripLines[1].StripWidth = maxY / 100;

// add the striplines 
this.chart1.ChartAreas[0].Axes[1].StripLines[0].Interval = 0;
this.chart1.ChartAreas[0].Axes[1].StripLines[1].Interval = 0;

this.chart1.ChartAreas[0].Axes[1].StripLines[0].IntervalOffset = average;
this.chart1.ChartAreas[0].Axes[1].StripLines[1].IntervalOffset = threshold;

它们通常会以不同的大小结束,但它很微妙,但我可以看到它而且我不明白它为什么会发生。

example

1 个答案:

答案 0 :(得分:2)

这只是一个光学错觉:屏幕截图显示了两条宽度相同的3行像素!

较暗,绿色的看起来稍微紧一点但是当您计算像素时,您会看到它们是相同的:

enter image description here

为了避免这种影响,我建议给它们一个具有相同亮度的颜色!

另请注意,由于四舍五入,您可能始终会获得非完美的子像素抗锯齿效果。

最后(也是最重要的):在屏幕截图中,网格线增加了幻觉。再一次:为避免这种情况,请确保网格线和带状线具有更明确的亮度值!

在photoshop中检查:在屏幕截图中,您有第一个带有brightness=109的带状线,网格线brightness=100,基本相同,所以它们合并,宽度从3到4像素。但第二个带状线有一个brightness=50。这导致感知的额外宽度为33%,这是显而易见的。

请注意,网格线颜色可以像带状线颜色一样轻松设置..