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によると:

配列の最初の2つのポイントは、最初の行を指定します。

に最低2つのポイントが必要ですArray

于 2013-02-20T12:54:51.677 に答える
0

ええと、少なくとも2つのポイントがないと線を引くことはできません:)

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

ほとんどの場合、例外はへの呼び出しからではなく、から発生してToArraye.Graphics.DrawLinesます。

于 2013-02-20T12:53:16.947 に答える