我有一个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