Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 系统。使用变量绘制绘图线_C#_Asp.net_System.drawing - Fatal编程技术网

C# 系统。使用变量绘制绘图线

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

在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)
{
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);
}