1

私はC#で非常に新しいので、パネル上でマウスクリックがある場所に四角形を表示したい

これが私のコードです:

private void panel1_MouseClick(object sender, MouseEventArgs e)
{
  int x = e.Location.X;
  int y = e.Location.Y;

       if (radioButton1.Checked == false)
       {

                ((Panel)sender).Invalidate(new Rectangle(x * 40, y * 40, 40, 40));
       }
       else if (radioButton2.Checked == true)
       {
                return;
       }
}

長方形の色を変更する方法を教えてください。コードが間違っている場合はお知らせください。ありがとう。

4

2 に答える 2

4

描画は、パネルの Paint イベント ハンドラーで実行する必要があります。パネルをクリックすると、(パネルの MouseUp イベントで) 四角形が作成され、四角形のコレクション (辞書など) に格納されます。次に、パネルを更新します。パネルの Paint イベントで、すべての長方形を描画します。簡単な例を次に示します。

Dictionary<Color, List<Rectangle>> rectangles = new Dictionary<Color, List<Rectangle>>();

private void panel1_Paint(object sender, PaintEventArgs e)
{
    //The key value for the dictionary is the color to use to paint with, so loop through all the keys (colors)
    foreach (var rectKey in rectangles.Keys)
    {
        using (var pen = new Pen(rectKey))     //Create the pen used to draw the rectangle (using statement makes sure the pen is disposed)
        {
            //Draws all rectangles for the current color
            //Note that we're using the Graphics object that is passed into the event handler.
            e.Graphics.DrawRectangles(pen, rectangles[rectKey].ToArray());                    
        }
    }
}

//This method just adds the rectangle to the collection.
private void panel1_MouseUp(object sender, MouseEventArgs e)
{
    if (e.Button == System.Windows.Forms.MouseButtons.Left)
    {
        Color c = getSelectedColor();     //Gets a color for which to draw the rectangle

        //Adds the rectangle using the color as the key for the dictionary
        if (!rectangles.ContainsKey(c))   
        {
            rectangles.Add(c, new List<Rectangle>());
        }
        rectangles[c].Add(new Rectangle(e.Location.X - 12, e.Location.Y - 12, 25, 25));    //Adds the rectangle to the collection
    }

    //Make the panel repaint itself.
    panel1.Refresh();
}
于 2012-08-13T18:50:05.220 に答える
2
private void panel1_MouseClick(object sender, MouseEventArgs e)
{
    Graphics g = panel1.CreateGraphics();
    g.DrawRectangle(new Pen(Brushes.Black),  
    new Rectangle(new Point(e.X, e.Y), new  
        Size(100, 100)));
}

コードの一部で色を変更できますBrushes.Black。必要に応じて変更してください

于 2012-08-13T08:28:21.490 に答える