次のコードを使用してグラフを作成しています。任意の四角形の色をマウスでクリックして変更する必要があります。私はこれまで、これを達成する方法を見つけることができません。winformsグリッドの四角形の背景色を変更するにはどうすればよいですか?
アイデアをいただければ幸いです。
int number;
public List<Rectangle> listRec = new List<Rectangle>();
Graphics g;
public CrochetPtrnDesign()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
number = int.Parse(textBox1.Text);
Rectangle rect = new Rectangle();
listRec.Clear();
rect.Size = new Size((pnlDesign.Width - 1)/number, (pnlDesign.Height - 1)/number);
for (int x = 0; x < number; x++)
{
rect.X = x * rect.Width;
for (int y = 0; y < number; y++)
{
rect.Y = y * rect.Height;
listRec.Add(rect);
}
}
}
catch
{
MessageBox.Show("Please enter a number...");
}
foreach (Rectangle rec in listRec)
{
g = pnlDesign.CreateGraphics();
Pen p = new Pen(Color.Black);
g.DrawRectangle(p, rec);
}
}
_g = pnlDesign.CreateGraphics(); _ control.CreateGraphicsを()あなたが実際に非永続する結果とする場合を除き、使用しないでください!クラスレベルで保存するデータを使用して、Paintイベントですべての描画を実行する必要があります。これらのデータが変更されると、pnlDesign.Invalidateを実行してPaintイベントをトリガし、スクラッチagianから__everything__を描画させます。 – TaW
1)なぜ矩形リストをいつも再作成しますか?それは、クリックするたびにサイズが変更されるたびに作成する必要があります。 2)四角形をクリックする前にどの色を使用していますか? – TaW
コードは何をすべきか?クリックで矩形の色を変更したい場合、 'Rectangle.Contains(Point)'を使って矩形に対して簡単なヒットテストが必要です。 –