C# 系统。使用变量绘制绘图线
在System.Drawing中有一个名为DrawLines的命令C# 系统。使用变量绘制绘图线,c#,asp.net,system.drawing,C#,Asp.net,System.drawing,在System.Drawing中有一个名为DrawLines的命令 https://msdn.microsoft.com/en-us/library/83k7w0zx(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2 我需要数组X和Y以“单一格式”绘制为点F,但在每个X和Y点的末尾都有一个“F” protected void Page_Load(object sender, EventArgs e) { doubl
https://msdn.microsoft.com/en-us/library/83k7w0zx(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2
我需要数组X和Y以“单一格式”绘制为点F,但在每个X和Y点的末尾都有一个“F”
protected void Page_Load(object sender, EventArgs e)
{
double[] X = new double[]{10,15,20,25,30};
double[] Y = new double[]{100,150,200,250,300};
using (Bitmap xPanel = new Bitmap(500, 500))
{
using (Graphics objGraphicPanel = Graphics.FromImage(xPanel))
{
for (int nn = 2; nn <= 5; nn++)
{
float x1 = Convert.ToSingle(X[nn - 1]);
float y1 = Convert.ToSingle(Y[nn - 1]);
float x2 = Convert.ToSingle(X[nn]);
float y2 = Convert.ToSingle(Y[nn]);
PointF[] ptf =
{
new PointF(x1, y1),
new PointF(x2, y2)
};
objGraphicPanel.DrawLines(colorPen, ptf);
xPanel.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
}
string Imgbase64 = Convert.ToBase64String(ms.ToArray());
MyImage.Src = "data:image/png;base64," + Imgbase64;
objGraphicPanel.Dispose();
}
xPanel.Dispose();
PointF需要“float single”格式,但我还需要在每个数组点的末尾使用“F”,以使PointF和绘图线正常工作
我怎样才能得到后面的“F”或等效代码
这只是我的阵列要大得多的一个例子。这个地方
PointF[] ptf =
{
new PointF(x1, y1),
new PointF(x2, y2)
};
这不是问题。PointF只接受浮点参数。当你把“F”放在数字的末尾时,你只需告诉编译器你的数字是浮点(不是双精度)。在代码中,值x1、x2、y1、y2已经是浮点值,因为您将它们定义为
float x1 = ...
float y1 = ...
问题是,您将数组从2迭代到5。在C#中,数组中的计数从0到N-1(N是数组的长度)。所以你应该写
for (int nn = 1; nn < 5; nn++)
应该在周期之外
当你写作的时候
using (...)
{
...
}
您不需要在括号(和)内处理您创建的项目。dispose在using运算符结束时自动调用。
那么台词呢
objGraphicPanel.Dispose();
及
它们是多余的
此外,不必为绘制单行创建数组。您可以使用DrawLine方法:
objGraphicPanel.DrawLine(colorPen, x1, y1, x2, y2);
因此,下面的代码应该可以正常工作
protected void Page_Load(object sender, EventArgs e)
{
double[] X = new double[]{10,15,20,25,30};
double[] Y = new double[]{100,150,200,250,300};
using (Bitmap xPanel = new Bitmap(500, 500))
{
using (Graphics objGraphicPanel = Graphics.FromImage(xPanel))
{
for (int nn = 1; nn < X.Length; nn++)
{
float x1 = Convert.ToSingle(X[nn - 1]);
float y1 = Convert.ToSingle(Y[nn - 1]);
float x2 = Convert.ToSingle(X[nn]);
float y2 = Convert.ToSingle(Y[nn]);
objGraphicPanel.DrawLine(colorPen, x1, y1, x2, y2);
}
}
xPanel.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
}
受保护的无效页面加载(对象发送方,事件参数e)
{
double[]X=新的double[]{10,15,20,25,30};
double[]Y=新的double[]{100150200250300};
使用(位图xPanel=新位图(500500))
{
使用(Graphics objGraphicPanel=Graphics.FromImage(xPanel))
{
对于(int nn=1;nn
objGraphicPanel.Dispose();
xPanel.Dispose();
objGraphicPanel.DrawLine(colorPen, x1, y1, x2, y2);
protected void Page_Load(object sender, EventArgs e)
{
double[] X = new double[]{10,15,20,25,30};
double[] Y = new double[]{100,150,200,250,300};
using (Bitmap xPanel = new Bitmap(500, 500))
{
using (Graphics objGraphicPanel = Graphics.FromImage(xPanel))
{
for (int nn = 1; nn < X.Length; nn++)
{
float x1 = Convert.ToSingle(X[nn - 1]);
float y1 = Convert.ToSingle(Y[nn - 1]);
float x2 = Convert.ToSingle(X[nn]);
float y2 = Convert.ToSingle(Y[nn]);
objGraphicPanel.DrawLine(colorPen, x1, y1, x2, y2);
}
}
xPanel.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
}