簡體   English   中英

輸入框塊 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”時,我在輸入框上繪畫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM