2

我目前正在尝试使用 Windows 窗体应用程序在 C# 中制作一个简单的绘图程序。使用 ToArray 函数将我的点列表转换为数组时,我收到一个通用的“ArgumentException 未处理:参数无效”错误。我知道我以前做过这个并且效果很好,我不知道 DrawLines 函数有什么特别之处吗?下面是代码,有问题的行是 panel1_Paint 事件的最后一行。提前感谢您提供的任何帮助。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace GetSig
{
    public partial class Form1 : Form
{
    bool paint = false;
    List<Point> myPointList = new List<Point>();

    private void panel1_MouseDown(object sender, MouseEventArgs e)
    {
        paint = true;
    }

    private void panel1_MouseMove(object sender, MouseEventArgs e)
    {
        if (paint)
        {
            myPointList.Add(e.Location);
            panel1.Invalidate();
        }
    }

    private void panel1_MouseUp(object sender, MouseEventArgs e)
    {
        paint = false;
    }

    private void panel1_Paint(object sender, PaintEventArgs e)
    {
        e.Graphics.DrawLines(Pens.Black, myPointList.ToArray());
    }
}
}
4

3 回答 3

2

根据MSDN

数组中的前两个点指定第一行。

你需要在你的Array.

于 2013-02-20T12:54:51.677 回答
0

该异常很可能不是来自对 的调用,ToArray而是来自e.Graphics.DrawLines.

于 2013-02-20T12:53:16.947 回答
0

好吧,如果没有至少两点,你就不能画线:)

if (myPointList.Count >= 2)
{
    e.Graphics.DrawLines(Pens.Black, myPointList.ToArray());
}
于 2013-02-20T12:55:00.327 回答