[英]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.