我的问题更多的是数学!我有一些值表示我想使用 fromImage(Bitmap) 在图片框上绘制的曲线点。我的图片框尺寸为 500x500。我也知道左上角的点为 (0,0),右下角的点为 (500,500)。显然原点应该是(250,250)。现在我想知道如何将自己的值转换为这种格式?
我拥有的样本点如下:
Voltage: -0.175 Current: -9.930625E-06
Voltage: -0.171875 Current: -9.53375E-06
Voltage: -0.16875 Current: -9.136875E-06
Voltage: -0.16875 Current: -8.74E-06
Voltage: -0.165625 Current: -8.343125E-06
Voltage: -0.1625 Current: -7.94625E-06
Voltage: -0.1625 Current: -7.549375E-06
Voltage: -0.159375 Current: -7.152188E-06
Voltage: -0.15625 Current: -6.755312E-06
您会看到 X 轴上应该有电压值,Y 轴上应该有电流值。我知道为了使它们更好一点,我必须将它们乘以更大的数字,也可能乘以逆或其他东西。但我仍然无法弄清楚如何在我的图片框中表示它们。这些点通常从第三象限开始,到第一象限结束。请协助!
只是要补充一点,我的 X 轴最小值和最大值是 -2V 和 +2V,对于 Y 轴,我将有 -10uA 到 +10uA(即 10*10^-6)
编辑
我想做的是有这样的曲线,所以我在 Graphics.DrawCurve 中使用了这些点:
更新 这是我的代码的样子:
g.DrawLine(penAxis, 250, 0, 250, 500); // Y AXIS
g.DrawLine(penAxis, 0, 250, 500, 250); // X AXIS
PointF[] p = new PointF[pinData.GetLength(0)]; //pinData is AboutBoxForm double[,] array
for (int i = 0; i < pinData.GetLength(0); i++)
{
p[i] = new PointF(250 * ((1 + (float)pinData[i, 0]) / 2), 250 * ((1 + (float)pinData[i, 1] )/ 10));
}
Pen pengraph = new Pen(pinColor, 2.0F);
g.DrawCurve(pengraph, p);
进度更新
好的,现在使用我的曲线下方的代码如下所示:
g.DrawLine(penAxis, 250, 0, 250, 500); // Y AXIS
g.DrawLine(penAxis, 0, 250, 500, 250); // X AXIS
PointF[] p = new PointF[pinData.GetLength(0)]; //pinData is AboutBoxForm double[,] array
for (int i = 0; i < pinData.GetLength(0); i++)
{
p[i] = new PointF(250 * (1 - ((float)pinData[i, 1] *100000) / 10), 250 * (1 + (((float)pinData[i, 0]))/ 2));
}
Pen pengraph = new Pen(pinColor, 2.0F);
g.DrawCurve(pengraph, p);
我认为现在的问题是扩展它。解决了我必须乘以 10^6 但我用 ^5 做了,没关系!!!谢谢大家。