2011-08-17 64 views
1

不用說,我的GooglFu今天很弱。透明色按鍵'顯示'淡入淡出期間

我有一個小的WinForm,它有背景,一個不對稱的圖像。爲了適應這個圖像,表單本身比圖像本身大一些。

我將窗體背景顏色設置爲LightSalmon以及窗體的TransparencyKey。

我不認爲完全有必要發佈這樣做的代碼(我認爲它來自CodeProject),但是,以防萬一,我也包括它。

的淡入:

private void opTimer_Tick(object sender, EventArgs e) 
    { 
     if (opacityIncrease > 0) 
     { 
      if (this.Opacity < 1) 
       this.Opacity += opacityIncrease; 
     } 
     else 
     { 
      if (this.Opacity > 0) 
       this.Opacity += opacityIncrease; 
      else 
       this.Close(); 
     } 
    } 

漸弱(叫上的FormClosing事件)

public void FadeForm() 
    { 
     opacityIncrease = -opacityDecrease; 
    } 

代碼工作,因爲它應該,但是,當窗體淡入淡出問題所在。當表單淡入時,我可以看到表單背景,那可怕的LightSalmon。一旦表格達到完全不透明度,背景確實是完全透明的。

有沒有一種方法來保持TransparencyKey顏色(表單背景),好吧,在淡入/淡出過程中是透明的?

最簡單的解決方案是將表單背景圖像更改爲適合表單的圖像,而不必擔心整個TransparencyKey業務,但是,我更喜歡使用的圖像,但它當然不是ShowStopper把它改成別的東西。

使用VS2008,.NET 3.5

與往常一樣,高興,如果有必要回答任何後續問題。

謝謝。

+0

在淡入淡出過程中,窗體的背景色會被報告爲什麼?如果它不是LightSalmon,那麼您是否可以將透明度顏色更新爲新的背景顏色,每個計時器都會打勾? – Xav

+0

在整個FadeIn和FadeOut過程中,表單BackColor屬性保留在LightSalmon中。 – Jasoomian

回答

0

我可以猜測Fadeout \ Fadein更改Pixel值,因此它不等於透明鍵。

只有當它相等時它纔會變得透明。

如果可以的話,嘗試限制淡出/中部分不包含LightSalmon區域 - 它應該保持相同的像素值並始終保持透明。

+0

感謝您的投入。不幸的是,應用程序(儘管是內部的)必須在我有機會實施您的建議之前發佈。下一次我有機會參與上述應用程序的學習時,我會給你一個好的大學的答案,看看我能否實現這個目標。再次感謝。 – Jasoomian