我想在c#中創建這個簡單的應用程序:當用戶雙擊表單中的特定位置時,會繪製一個小圓圈。只需點擊一下,如果當前位置用圓圈標記 - 圓圈將被刪除。在.NET中控制位圖的可見性
我試圖通過簡單的註冊MouseDoubleClick和鼠標點擊事件,要做到這一點,並從一個.bmp文件畫圓方式如下:
private void MouseDoubleClick (object sender, MouseEventArgs e)
{
Graphics g = this.CreateGraphics();
Bitmap myImage = (Bitmap)Bitmap.FromFile("Circle.bmp");
g.DrawImage(myImage, e.X, e.Y);
}
我的問題是,我不知道該怎麼做當用戶點擊它的位置時,圓圈是不可見的:我知道如何檢查所選位置是否包含圓圈(通過管理所有位置包含圓圈的列表...),但我不知道如何刪除它。
另一個問題:我應該調用this.CreateGraphics()方法每次用戶雙擊一個位置,就像我在我的代碼片段中寫的,或者我應該在初始化時調用它一次嗎?
感謝代碼片段,它聽起來像一個很好的解決方案。然而,我還有一個問題:我仍然喜歡使用位圖而不是DrawEllipse(),因爲我需要繪製圖標。現在,假設我有成千上萬的圖標,這種解決方案是否會損害性能?我的意思是,如果位圖存儲爲類成員,則Clear()和DrawImage()的成本是多少? – 2010-04-17 22:41:09
自從Hun1Ahpu提到它之後,我只提到過DrawEllipse,而且我會這樣做,因爲我更喜歡管理代碼,而不是管理文件。 – 2010-04-18 01:06:02
現在,至於性能,請考慮以下內容。我不確定現在平均硬盤驅動器的讀取和讀取時間是多少,但比從RAM中讀取要慢幾個數量級* *。總是存在一個記憶速度的折衷,這取決於你的目標是什麼。您可以將這些圖標添加到資源文件中 - 您的圖標將在運行時加載到內存中,這樣您的應用程序最初可能需要更長時間才能加載,但繪圖將會很快。 – 2010-04-18 01:10:36