vb.net半透明图片,vb窗体背景透明

VB中如何使image控件图片背景透明

Vb6只有Label控件可以设置背景透明,VB.net基本上都可以,可以按住CTRL多选,或者用鼠标框选,选中多个控件后,设置它们的backcolor属性为透明,或者用代码:

公司主营业务:网站设计、做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出点军免费做网站回馈大家。

For Each ctl As Control In Me.Controls

ctl.BackColor = Color.Transparent

Next

VB中怎么使Image或PictureBox控件中图片半透明

示例:背景为纯白色

执行后:

代码:

'========================================

'声明作用:透明化PictureBox,注意设置其背景颜色为纯白

'========================================

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

'========================================

'函数名称:ShapeMe

'函数作用:透明化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

vb.net怎样使窗体半透明

窗体半透明: FormXX.Opacity=0.5或者: SetStyle(ControlStyles.SupportsTransparentBackColor, True)ControlXX.BackColor = Color.Transparent '或者是带Alpha的颜色ControlXX.BackColor = Color.FromArgb(128,Color.Red)


当前名称:vb.net半透明图片,vb窗体背景透明
分享网址:http://hbruida.cn/article/hccjse.html