我有datalist = 62,76,80,72,71,75,77,我想把它作为2D线绘制点对点呈现。在我的Wpf应用程序中,我有一个高度为173和宽度为455的画布。
我如何去做它并由我的datalist绘制一条线并使用几乎整个画布的高度?因为现在数据只是在画布底部的一条线上表示,而不是使用(并因此给出数据的错误表示)画布的整个高度。 将它放在盒子的中心也是很好的...
答案 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。