2014-10-01 83 views
2

如何在不影響窗體控件的情況下更改窗體的alphablend?形式:透明,窗體上控制:非透明?

德爾福XE7

enter image description here

+0

AFAIK這是不可能與表單alphablending。我知道的唯一解決方案是製作背景副本,將其更改並繪製到表單上,使其看起來像半透明。 – iamjoosy 2014-10-01 11:29:59

+1

在使用兩個表單之前,我已經做了類似的事情。一個窗體頂部帶有用於所有背景的透明度的非alphablend控件。然後顯示在一個固定的相對位置上,而另一個表單是alphablended。不幸的是,我不認爲我已經有了這些代碼,但是您可能會發現這是一種有效的方法。 – Kanitatlan 2014-10-01 12:41:58

+0

如果您正在尋找類似於http://imgur.com/8ImgFIO的東西,那麼這將會是一個非常廣泛的答案,因爲它是分層窗口的組合,並且自己的組件調用回來在分層位圖上繪製其他窗體放置在mainform的Move(var Message:TWMMove)中。 – bummi 2014-10-01 15:13:55

回答

0

其實這個問題的答案可能是非常簡單的...(僅適用於Windows)

的JEDI VCL庫有一個組件(TJvTransparentForm),它允許你採用Alpha混合PNG圖像(即上圖中顯示的灰色背景)並將其用於製作表單控件。圖片實際上存儲在TImage中,您需要將圖標本身放置在圖標上。然後只需響應TImage上的鼠標點擊。

你有什麼要求(也許?)。

如果你足夠狡猾,你甚至可能跟蹤鼠標移動並更改圖像以發出鼠標移過的正確「按鈕」。

1

解決此問題的一種方法是使用Multi-Device Application(如果使用VCL是不可能的)。

如果您需要保留透明TForm只需更改屬性Transparency = True

如果您需要保留一個半透明組件,則所有組件都具有Opacity屬性,該屬性可以分配一個介於0和1之間的更透明的值,其中0更接近該組件。

例如,您可以將控件放入TLayout中,並根據需要更改其Opacity,並且對其他組件無效,反之亦然。