2011-03-24 13 views
1

我試圖在不同情況下更改按鈕的圖像。 它會做的唯一的事情就是在舊的(更寬的)圖像的頂部添加新的(更小的)圖像。我怎樣才能確保舊圖像將被清除。我找不到button.image.clear或其他東西。C#改變一個按鈕的圖像只是粘貼舊圖像的頂部新圖像

if (Global.van_zoek) 
     { 
      btnterug.BackgroundImage = ((System.Drawing.Image)(Properties.Resources.ZoekBedrijf2)); 
     } 
     else if (!diftext) 
     { 
      btnterug.BackgroundImage = ((System.Drawing.Image)(Properties.Resources.AlleBedrijven2)); 
     } 
     else if (_Prparent != null) 
     { 
      btnterug.BackgroundImage = ((System.Drawing.Image)(Properties.Resources.InfoContact2)); 
     } 
     else 
     { 
      btnterug.BackgroundImage = ((System.Drawing.Image)(Properties.Resources.InfoProject2)); 
     }  

http://img225.imageshack.us/i/imageprobl.jpg/

+0

按鈕面只在可以處理繪畫事件時清除,也許有些東西阻止了這個。 也許你必須設置圖像大小調整模式來填充按鈕來清除它。 – CodingBarfield 2011-03-24 11:01:43

+0

將BackgroundImageLayout更改爲None,看看會發生什麼。目前它在默認的'Tile'模式下。 – 2011-03-24 11:08:51

+0

它是標準按鈕還是自定義控件? – 2011-03-24 11:13:47

回答

2
//Change old image to null 
btnterug.BackgroundImage = null; 
//Load New Image 
btnterug.BackgroundImage = ((System.Drawing.Image)(Properties.Resources.InfoProject2)); 
+0

我會認爲這會工作,但結果是一樣的,請參閱 – Daanvl 2011-03-24 11:03:03

+0

的鏈接@Daanvl我在示例應用程序上測試了它。完美的作品。 – Mayank 2011-03-24 11:12:15

+0

在我的情況下,即使是簡單的'button1.BackgroundImage = Properties.Resources.archive_icon;'完美的作品。我想OP有自定義寫控制 – 2011-03-24 11:17:07

0

你可以只設置源爲空將其更改爲新的圖像之前。

+0

對不起,也許我應該提到它是winforms應用程序。按鈕不具有屬性源。或者我必須添加源代碼manualy? – Daanvl 2011-03-24 10:12:32

+0

對不起,我認爲這是WPF。 – BigPete 2011-03-24 10:33:05

1

嘗試使用無效的方法:

button2.Invalidate(); 
+0

更改圖像之前或之後? 編輯:嘗試兩個沒有變化... – Daanvl 2011-03-24 10:09:50

+0

嗯。我根本無法重現你的錯誤。我用兩個按鈕創建了一個表單。第二個按鈕在第一個循環中更改圖片。一張照片很大,另一張很小。但圖片更改發生清楚。在此刻你正在改變圖片?可能是你的問題,因爲程序暫時掛起? – 2011-03-24 11:04:43