Vb6只有Label控件可以設(shè)置背景透明,VB.net基本上都可以,可以按住CTRL多選,或者用鼠標(biāo)框選,選中多個(gè)控件后,設(shè)置它們的backcolor屬性為透明,或者用代碼:
公司主營業(yè)務(wù):網(wǎng)站設(shè)計(jì)、做網(wǎng)站、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出點(diǎn)軍免費(fèi)做網(wǎng)站回饋大家。
For?Each?ctl?As?Control?In?Me.Controls
ctl.BackColor?=?Color.Transparent
Next
示例:背景為純白色
執(zhí)行后:
代碼:
'========================================
'聲明作用:透明化PictureBox,注意設(shè)置其背景顏色為純白
'========================================
Private?Declare?Function?GetPixel?Lib?"gdi32"?(ByVal?hdc?As?Long,?ByVal?X?As?Long,?ByVal?Y?As?Long)?As?Long
Private?Declare?Function?SetWindowRgn?Lib?"user32"?(ByVal?hwnd?As?Long,?ByVal?hRgn?As?Long,?ByVal?bRedraw?As?Boolean)?As?Long
Private?Declare?Function?CreateRectRgn?Lib?"gdi32"?(ByVal?X1?As?Long,?ByVal?Y1?As?Long,?ByVal?X2?As?Long,?ByVal?Y2?As?Long)?As?Long
Private?Declare?Function?CombineRgn?Lib?"gdi32"?(ByVal?hDestRgn?As?Long,?ByVal?hSrcRgn1?As?Long,?ByVal?hSrcRgn2?As?Long,?ByVal?nCombineMode?As?Long)?As?Long
Private?Declare?Sub?ReleaseCapture?Lib?"user32"?()
Private?Declare?Function?SendMessage?Lib?"user32"?Alias?"SendMessageA"?(ByVal?hwnd?As?Long,?ByVal?wMsg?As?Long,?ByVal?wParam?As?Long,?lParam?As?Any)?As?Long
Private?Declare?Function?DeleteObject?Lib?"gdi32"?(ByVal?hObject?As?Long)?As?Long
Private?Const?RGN_DIFF?=?4
Dim?CurRgn?As?Long,?TempRgn?As?Long??'?Region?variables
'========================================
'函數(shù)名稱:ShapeMe
'函數(shù)作用:透明化PictureBox背景
'========================================
Public?Sub?ShapeMe(Color?As?Long,?HorizontalScan?As?Boolean,?Optional?Name1?As?Form?=?Nothing,?Optional?Name2?As?PictureBox?=?Nothing)
Dim?X?As?Integer,?Y?As?Integer?'points?on?form
Dim?dblHeight?As?Double,?dblWidth?As?Double?'height?and?width?of?object
Dim?lngHDC?As?Long?'the?hDC?property?of?the?object
Dim?booMiddleOfSet?As?Boolean?'used?during?the?gathering?of?transparent?points
Dim?colPoints?As?Collection?'this?will?hold?all?usrPoints
Set?colPoints?=?New?Collection
Dim?Z?As?Variant?'used?during?iteration?through?collection
Dim?dblTransY?As?Double?'these?3?variables?hold?each?point?that?will?be?made?transparent
Dim?dblTransStartX?As?Double
Dim?dblTransEndX?As?Double
Dim?Name?As?Object?'will?hold?the?name?of?the?object.??Late-bound?and?slower,?but?allows?different?types?(in?this?case?Form?or?PictureBox)
'check?out?the?name?or?names?passed?into?the?subroutine
If?Name1?Is?Nothing?Xor?Name2?Is?Nothing?Then?'we?know?there?is?a?name?in?one?of?them
If?Name1?Is?Nothing?Then?'set?the?name
Set?Name?=?Picture1
Else
Set?Name?=?Picture1
End?If
Else?'both?or?none?hold?valid?names
MsgBox?"Must?pass?in?the?name?of?either?a?Form?OR?a?PictureBox.??TransForm?received?NONE?or?BOTH.??Function?failed.",?vbOKOnly,?"ShapeMe?Subroutine"
Exit?Sub
End?If
'initialization
With?Name
.AutoRedraw?=?True?'object?must?have?this?setting
.ScaleMode?=?3?'object?must?have?this?setting
lngHDC?=?.hdc?'faster?to?use?a?variable;?VB?help?recommends?using?the?property,?but?I?didn't?encounter?any?problems
If?HorizontalScan?=?True?Then?'look?for?lines?of?transparency?horizontally
dblHeight?=?.ScaleHeight?'faster?to?use?a?variable
dblWidth?=?.ScaleWidth?'faster?to?use?a?variable
Else?'look?vertically?(note?that?the?names?"dblHeight"?and?"dblWidth"?are?non-sensical?now,?but?this?was?an?easy?way?to?do?this
dblHeight?=?.ScaleWidth?'faster?to?use?a?variable
dblWidth?=?.ScaleHeight?'faster?to?use?a?variable
End?If?'HorizontalScan?=?True
End?With
booMiddleOfSet?=?False
'gather?all?points?that?need?to?be?made?transparent
For?Y?=?0?To?dblHeight??'?Go?through?each?column?of?pixels?on?form
dblTransY?=?Y
For?X?=?0?To?dblWidth??'?Go?through?each?line?of?pixels?on?form
'note?that?using?GetPixel?appears?to?be?faster?than?using?VB's?Point
If?TypeOf?Name?Is?Form?Then?'check?to?see?if?this?is?a?form?and?use?GetPixel?function?which?is?a?little?faster
If?GetPixel(lngHDC,?X,?Y)?=?Color?Then??'?If?the?pixel's?color?is?the?transparency?color,?record?it
If?booMiddleOfSet?=?False?Then
dblTransStartX?=?X
dblTransEndX?=?X
booMiddleOfSet?=?True
Else
dblTransEndX?=?X
End?If?'booMiddleOfSet?=?False
Else
If?booMiddleOfSet?Then
colPoints.Add?Array(dblTransY,?dblTransStartX,?dblTransEndX)
booMiddleOfSet?=?False
End?If?'booMiddleOfSet?=?True
End?If?'GetPixel(lngHDC,?X,?Y)?=?Color
ElseIf?TypeOf?Name?Is?PictureBox?Then?'if?a?PictureBox?then?use?Point;?a?little?slower?but?works?when?GetPixel?doesn't
If?Name.Point(X,?Y)?=?Color?Then
If?booMiddleOfSet?=?False?Then
dblTransStartX?=?X
dblTransEndX?=?X
booMiddleOfSet?=?True
Else
dblTransEndX?=?X
End?If?'booMiddleOfSet?=?False
Else
If?booMiddleOfSet?Then
colPoints.Add?Array(dblTransY,?dblTransStartX,?dblTransEndX)
booMiddleOfSet?=?False
End?If?'booMiddleOfSet?=?True
End?If?'Name.Point(X,?Y)?=?Color
End?If?'TypeOf?Name?Is?Form
Next?X
Next?Y
CurRgn?=?CreateRectRgn(0,?0,?dblWidth,?dblHeight)??'?Create?base?region?which?is?the?current?whole?window
For?Each?Z?In?colPoints?'now?make?it?transparent
TempRgn?=?CreateRectRgn(Z(1),?Z(0),?Z(2)?+?1,?Z(0)?+?1)??'?Create?a?temporary?pixel?region?for?this?pixel
CombineRgn?CurRgn,?CurRgn,?TempRgn,?RGN_DIFF??'?Combine?temp?pixel?region?with?base?region?using?RGN_DIFF?to?extract?the?pixel?and?make?it?transparent
DeleteObject?(TempRgn)??'?Delete?the?temporary?region?and?free?resources
Next
SetWindowRgn?Name.hwnd,?CurRgn,?True??'?Finally?set?the?windows?region?to?the?final?product
'I?do?not?use?DeleteObject?on?the?CurRgn,?going?with?the?advice?in?Dan?Appleman's?book:
'once?set?to?a?window?using?SetWindowRgn,?do?not?delete?the?region.
Set?colPoints?=?Nothing
End?Sub
Private?Sub?Command1_Click()
Picture1.BackColor?=?RGB(0,?0,?0)?'需要透明的顏色(純白色)
ShapeMe?RGB(255,?255,?255),?True,?,?Picture1?'透明底色
End?Sub
窗體半透明: FormXX.Opacity=0.5或者: SetStyle(ControlStyles.SupportsTransparentBackColor, True)ControlXX.BackColor = Color.Transparent '或者是帶Alpha的顏色ControlXX.BackColor = Color.FromArgb(128,Color.Red)