在vb操作中如何製作透明窗體,DELPHI中如何讓FORM窗體透明,只顯示控制元件

時間 2022-03-04 23:00:21

1樓:

你會用api嗎?

private declare function getwindowlong lib "user32" alias "getwindowlonga" (byval hwnd as long, byval nindex as long) as long

private declare function setwindowlong lib "user32" alias "setwindowlonga" (byval hwnd as long, byval nindex as long, byval dwnewlong as long) as long

private declare function setlayeredwindowattributes lib "user32" (byval hwnd as long, byval crkey as long, byval balpha as byte, byval dwflags as long) as long

'其中hwnd是透明窗體的控制代碼,crkey為顏色值,balpha是透明度,取值範圍是[0,255],dwflags是透明方式,可以取兩個值:當取值為lwa_alpha時,crkey引數無效,balpha引數有效;當取值為lwa_colorkey時,balpha引數有效而窗體中的所有顏色為crkey的地方將變為透明--這個功能很有用:我們不必再為建立不規則形狀的窗體而呼叫一大堆區域分析、建立、合併函式了,只需指定透明處的顏色值即可,哈哈哈哈!

請看具體**。

'**二: 形狀不規則的窗體

private sub form_load()

dim rtn as long

borderstyler = 0

rtn = getwindowlong(hwnd, (-20))

rtn = rtn or &h80000

setwindowlong hwnd, (-20), rtn

將扣去視窗中的紅色

end sub

'**一: 一個半透明窗體

private sub form_load()

dim rtn as long

rtn = getwindowlong(hwnd, (-20))

rtn = rtn or &h80000

setwindowlong hwnd, (-20), rtn

那兒大於5時窗體可以攔截滑鼠事件,低於5則滑鼠都認為那兒沒有窗體

end sub

delphi中如何讓form窗體透明,只顯示控制元件

2樓:騰訊電腦管家

procedure tform1.formcreate(sender: tobject);

begin

borderstyle := bsnone;

brush.style := bsclear;

end;

//保證你

只看的到控制元件!!!

3樓:人間雜貨店

如果半透明的話可以顯示控制元件,如果全透明 控制元件顯示不出來。

vb中設定窗體透明?

4樓:m一片空白

option explicit

private declare function createcompatiblebitmap lib "gdi32" (byval hdc as long, _

byval nwidth as long, byval nheight as long) as long

private declare function selectobject lib "gdi32" (byval hdc as long, _

byval hobject as long) as long

private sub form_load()

form1.borderstyle = 0

dim bitmap

me.autoredraw = true

bitmap = createcompatiblebitmap(me.hdc, 0, 0)

selectobject me.hdc, bitmap '設定窗體透明

end sub

private sub form_click()

end '單擊窗體任何地方都是退出程式

end sub

自己寫的一段**。你看一下吧。。我寫是完全的。直接沒有了標題欄,如果想要標題欄的話。把其中的 form1.borderstyle = 0 這句去掉就可以了。

5樓:匿名使用者

原理:先把窗體背景設定為一種特殊色

然後用setlayeredwindowattributes函式扣除那個顏色

**:模組:

public declare function setlayeredwindowattributes lib "user32" (byval hwnd as long, byval crkey as long, byval balpha as byte, byval dwflags as long) as long

public const gwl_exstyle = (-20)

public const lwa_alpha = &h2

public declare function getwindowlong lib "user32" alias "getwindowlonga" (byval hwnd as long, byval nindex as long) as long

public declare function setwindowlong lib "user32" alias "setwindowlonga" (byval hwnd as long, byval nindex as long, byval dwnewlong as long) as long

窗體載入時候**form_load:

me.backcolor=&h458b34 '設定特殊顏色

setwindowlong me.hwnd,gwl_exstyle, getwindowlong(me.hwnd, gwl_exstyle)

樓上火星了 這只是一種

第二種合併區域 利用gdi 不過效率不高

第三種利用gdi+ 可以建立透明通道 不過**複雜。只要扣色上個**即可。

******************************====

to 樓上:

樓上的**是模擬沒有自動重繪;但是有個問題就是在沒有重繪的時候 窗體的背景就是固定的;而且一般這種視窗會支援移動,那麼就出現錯誤了;如果你要不斷重新整理,那麼你的程式的效率就會很低;任何此類的layeredwindow都是正解;包括全透明或者是半透明或者是部分透明或者是 透明通道;只不過有一些有直接api實現;有一些需要結合一堆api實現。

6樓:

private declare function setlayeredwindowattributes lib "user32" (byval hwnd as long, byval crkey as long, byval balpha as byte, byval dwflags as long) as long

const ws_ex_layered = &h80000

const gwl_exstyle = (-20)

const lwa_alpha = &h2

const lwa_colorkey = &h1

private declare function getwindowlong lib "user32" alias "getwindowlonga" (byval hwnd as long, byval nindex as long) as long

private declare function setwindowlong lib "user32" alias "setwindowlonga" (byval hwnd as long, byval nindex as long, byval dwnewlong as long) as long

private sub form_load()

dim rtn as long

rtn = getwindowlong(me.hwnd, gwl_exstyle)

rtn = rtn or ws_ex_layered

setwindowlong me.hwnd, gwl_exstyle, rtn

setlayeredwindowattributes me.hwnd, 0, 150, lwa_alpha

end sub

vb如何實現透明窗體?

7樓:vb妮可

private declare function getwindowlong lib "user32" alias "getwindowlonga" (byval hwnd as long, byval nindex as long) as long

private declare function setwindowlong lib "user32" alias "setwindowlonga" (byval hwnd as long, byval nindex as long, byval dwnewlong as long) as long

private declare function setlayeredwindowattributes lib "user32" (byval hwnd as long, byval crkey as long, byval balpha as byte, byval dwflags as long) as long

private sub form_load()

me.borderstyle = 0

me.caption = ""

me.backcolor = vbred

setlayeredwindowattributes me.hwnd, vbred, 0, 1

end sub

VB窗體建立,VB中如何新建窗體

過於基礎的應用操作,希望你能自己動手。哈哈,交學費我就幫幫你。vb中如何新建窗體 選單中 工程 新增窗體。vb窗體的介紹 vb窗體是visual basic編譯環境提供的用於開發桌面程式的通用窗體類,其中包含和設計好的屬性和方法,開發人員可以直接使用,或基於窗體類 class form 定製自己的程...

vb中如何把控制元件變成透明的,VB中如何把控制元件變成透明的

鬆鬆一號 backstyle 屬性 返回或設定一個值,它指定 label 控制元件或 shape 控制元件的背景是透明的還是非透明的。設定值0 透明 在控制元件後的背景色和任何 都是可見的。1 預設值 非透明 用控制元件的 backcolor 屬性設定值填充該控制元件,並隱藏該控制元件後面的所有顏色...

VB6 0的窗體中,如何顯示不同內容

1全部不知道你註解是什麼用意。不過兩個都說一下,如果你不想新增form。你就建立frame組將所想要切換的所有控制元件全放在相應的每一個frame1陣列控制元件裡。然後,不管你有多少個控制元件。你都不需要對那控制元件單個操控。你只用通過用迴圈來控制frame1陣列的visible屬性來統一管理,或者...