输入框块 system.drawing

Inputbox block the system.drawing

我正在尝试在表单上编写此功能:用户单击表单,输入框要求用户输入名称,然后在用户单击的表单中的位置绘制一个圆圈。我现在面临的一个问题是圆圈现在绘制在输入框出现的地方。我实际上有一个功能可以重新绘制表单上的每个圆圈,但它仍然不起作用。这是我的代码:

private void Form1_MouseClick(object sender, MouseEventArgs e)
    {
        string ProvinceName;
        System.Drawing.SolidBrush myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Red);
        System.Drawing.Graphics formGraphics;
        formGraphics = this.CreateGraphics();

        formGraphics.FillEllipse(myBrush, new Rectangle(e.X, e.Y, 10, 10));

        ProvinceName = Microsoft.VisualBasic.Interaction.InputBox("郡名", "", "无名",100,100);

        provinces.Add(new province(ProvinceName, e.X, e.Y));

        listBox1.SelectedIndex = provinces.Count - 1;

        myBrush.Dispose();
        formGraphics.Dispose();
        PaintMap();// This is the function repaint every recorded clicked locations.

    }

仅仅画出来是不够的。每次重新绘制表单时,都需要重新绘制。第一步是覆盖 OnPaint

protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);

    // paint your circles here, when they need to be persisted 
    // e.Graphics.DrawRectangle(redPen, r);
}

显然,您需要跟踪需要绘制的内容,以及何时不再需要绘制的内容,但这应该可以帮助您入门

我使用Bipmap 来存储绘画,然后使用绘画事件重新绘制表单。问题已经解决了。我想当我直接使用“System.Drawing时,我在输入框上绘画。