Graphics graphics = Graphics.FromHwnd(this.button1.Handle);this.button1.Show();Rectangle newRect = button1.DisplayRectangle;System.Drawing.Icon ico = new Icon(@"D:\Web.ico");graphics.DrawIcon(ico, newRect);graphics.Dispose();button上沒有,form上也沒有,是不是沒有畫出來?
1 回答

人到中年有點甜
TA貢獻1895條經驗 獲得超7個贊
肯定能畫出來,關鍵是你在哪兒繪制的。
一般都是在 Paint/OnPaint 事件里面繪制。
如果你在別的事件里繪制,你得保證繪制之后再也不去觸發它的 Paint 。
比如你現在在 Click 里面畫了,你鼠標移入 Button 會觸發一次 Paint(按鈕變高亮狀態),你之前畫的就被擦掉了;你鼠標點擊一下,又觸發一次 Paint(按鈕變點擊狀態);你鼠標移出,又觸發一次 Paint(按鈕變正常狀態);最小化窗體后又恢復還會觸發 Paint(重繪);獲得焦點、失去焦點會 Paint……等等等等,觸發 Paint 的可能太多了,你要不在 Paint 里繪制,那么每次 Paint 都會把上一次繪制好的給擦掉了。
除非你用一個 Timer 不間斷繪制保證不被刷掉,但這樣對資源耗費太大了。
添加回答
舉報
0/150
提交
取消