2010-05-19 129 views
0

我有我想要呈現的二維線點到點的datalist = 62,76,80,72,71,75,77。在我的Wpf應用程序中,我有一個高度爲173和寬度爲455的畫布。在畫布上畫一條二維線

我該如何去解決這個問題,並通過我的datalist繪製一條線並使用幾乎整個畫布的高度?因爲現在數據只是在畫布底部的一條線上表示,而不是使用(並且因此給出數據的不良表示)整個畫布的高度。 它也將是很好的把它放在箱子的中心...

回答

3

你需要改變你的datalist來表示畫布的整個高度。有兩種明顯的方法:

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中並綁定到該代碼。

+0

其中任何一種都應該只使用從62 * 173/77到173的畫布,一切都保持空白。 – 2010-05-19 15:04:52

+0

@Adrian好的趕上,我已經更新了我的回答 – 2010-05-19 15:09:57

+0

你修好了我覺得 – 2010-05-19 15:10:53