在画布上绘制2D线

时间:2010-05-19 14:53:27

标签: c# wpf

我有datalist = 62,76,80,72,71,75,77,我想把它作为2D线绘制点对点呈现。在我的Wpf应用程序中,我有一个高度为173和宽度为455的画布。

我如何去做它并由我的datalist绘制一条线并使用几乎整个画布的高度?因为现在数据只是在画布底部的一条线上表示,而不是使用(并因此给出数据的错误表示)画布的整个高度。 将它放在盒子的中心也是很好的...

1 个答案:

答案 0 :(得分:3)

您需要转换数据列表以表示画布的整个高度。有两种明显的方法可以做到这一点:

1)将画布的高度除以数据列表中的最大值。将此数据列表中的所有值相乘并绑定到这些新数据点。

2)按原样添加直线,然后应用选项1中的乘数的比例变换。

无论哪种方式,您都不需要现在居中,因为整个画布将用完。


我在评论中看到你实际上说“几乎整个画布的高度”,下面的阿德里安的评论是正确的,因为我没有想到通过下限。这是一些更好的伪代码

int border = 20; //How much of the canvas you *don't* want to use
int graphHeight = Canvas.Height - border;
int maxValue = DataList.GetMaxValue();
int minValue = DataList.GetMinValue();

double multiplier = graphHeight / (maxValue - minValue);

foreach(int value in DataList)
{
    int distanceFromBottom = value - minValue;
    double proportionalValue = distanceFromBottom * multiplier;
    double newValue = proportionalValue  + (border/2) // move it up to the middle of the canvas
}

将newValues存储在新的DataList中并绑定到该DataList。