我有一個PictureBox
,我想知道它的數據點(X,Y點)繪製二極管曲線。目前我的影片大小爲365 * 468像素。我正在抓我的頭來翻譯數據點,我必須像素友好值,因此曲線很好地繪製在圖片框上。將數據點轉換爲用於繪製的像素座標
到目前爲止,我已經嘗試過各種公式,但沒有成功!目前我被困在代碼中,它至少顯示出一點曲線!
private PointF[] TranslatePoints(PointF[] points)
{
var count = points.Count();
var p = new PointF[count];
for(var i = 0; i < count; i++)
{
p[i].X = DrawingArea.Width * (1 + (points[i].X/_voltageRange));
p[i].Y = DrawingArea.Height * (1 - (points[i].Y * (float)Math.Pow(_currentRange, -1)));
}
return p;
}
_voltageRange
和_currentRange
是我想要的曲線是基於...它通常是+2應該意味着對X軸上的值,如果他們是-2到+2之間應繪製規模,對於當前的Y軸值應該繪製,例如,如果它們在-10微米和+10之間ü
我希望此方法儘可能獨立,因此如果我調整圖片框的大小,則會正確更新縮放比例。
這是例如第一個數據點,我有實際值:(-0.6375,-0.00000993375),我的方法將它轉換爲(24.515625,932.899536),這是超出大小piturebox。
通常二極管曲線看起來是這樣的:
任何想法嗎?
謝謝,你能解釋我應該分配給'leftBottomPointOriginal'和'leftBottomPointScaledUp'嗎?我沒有明白! – 2012-07-18 12:34:51
我想在這裏你應該定位到中心位置,所以得到圖上0,0位置的點。如果按比例放大真實座標,則可以檢查差異並將圖形重新定位到中心。 – HamoriZ 2012-07-18 12:40:05
好吧,它比這更簡單,我原來的方法是正確的,我只需要在我的等式中將高度和高度除以2!不管怎樣,謝謝。 – 2012-07-18 12:43:03