网站首页 > 文章中心 > 其它

vb.net窗体半透明

作者:小编 更新时间:2023-09-04 19:11:25 浏览量:95人看过

VB.NET 2005 如何做部分窗体透明

简单的部分透明比较难做,不过可以换个方式考虑一下.

大致思路如下:

①将backgroundimage设成一个位图(点阵图)

vb 窗体透明 控件半透明

PS:一下代码是复制的,因为Google一下就有

'添加新模块:

Option Explicit

'透明接口调用

Alias "SetwindowLongA" _

(ByVal hwnd As Long, _

ByVal nIndex As Long, _

ByVal dwNewLong As Long) _

As Long

Alias "GetwindowLongA" ( _

ByVal hwnd As Long, _

ByVal nIndex As Long) _

ByVal crKey As Long, _

ByVal bAlpha As Long, _

ByVal dwFlags As Long) _

'设置窗口透明度

Public Sub SetFormToAlpha(hwnd As Long, lngAlpha As Long)

Dim tmpLog As Long

If hwnd = 0 Then Exit Sub

tmpLog = GetwindowLong(hwnd, GWL_EXSTYLE) '窗口属性

Call SetwindowLong(hwnd, GWL_EXSTYLE, tmpLog or WS_EX_LAYERED)

Call SetLayeredwindowAttributes(hwnd, 0, lngAlpha, LWA_ALPHA)

End If

End Sub

VB6如何设置半透明窗体和控件

先建一个标准EXE工程,然后添加一个用户控件,把以下代码复制到控件代码中,再把此控件放置到Form1上.

[vb]?view plain?copy

Option?Explicit

Private?Type?POINTAPI

X?As?Long

Y?As?Long

End?Type

Private?Type?RECT

Left?As?Long

Top?As?Long

Right?As?Long

Bottom?As?Long

Private?Const?DT_CENTER?=?H1

Private?Const?SW_HIDE?=?0

Dim?m_hMemDC?As?Long

Dim?m_hMemBmp?As?Long,?m_hMemBmpPrev?As?Long

Dim?m_rcControl?As?RECT

Private?Sub?UserControl_Initialize()

UserControl.AutoRedraw?=?True

UserControl.BackColor?=?vbRed

m_hMemDC?=?CreateCompatibleDC(UserControl.hdc)

End?Sub

Private?Sub?UserControl_Terminate()

If?m_hMemBmp?0?Then

DeleteObject?SelectObject(m_hMemDC,?m_hMemBmpPrev)

End?If

DeleteDC?m_hMemDC

Public?Sub?Translucence()

Dim?hdc?As?Long

Dim?tPt?As?POINTAPI

'获得控件当前位置和大小

ClientToScreen?UserControl.hwnd,?tPt

ScreenToClient?UserControl.ContainerHwnd,?tPt

Call?GetClientRect(UserControl.hwnd,?m_rcControl)

OffsetRect?m_rcControl,?tPt.X,?tPt.Y

'创建一幅内存位图

DeleteObject?(SelectObject(m_hMemDC,?m_hMemBmpPrev))

m_hMemBmp?=?CreateCompatibleBitmap(UserControl.hdc,?m_rcControl.Right,?m_rcControl.Bottom)

m_hMemBmpPrev?=?SelectObject(m_hMemDC,?m_hMemBmp)

'隐藏控件

ShowWindow?UserControl.hwnd,?SW_HIDE

DoEvents

'保存控件容器的图像到内存位图中

Dim?hDesktopDC?As?Long

hDesktopDC?=?GetDC(UserControl.hwnd)

BitBlt?m_hMemDC,?0,?0,?m_rcControl.Right,?m_rcControl.Bottom,?hDesktopDC,?0,?0,?vbSrcCopy

ReleaseDC?0,?hDesktopDC

'通过alpha效果进行半透明渲染

UserControl.AutoRedraw?=?False

'显示控件

ShowWindow?UserControl.hwnd,?SW_SHOW

'将渲染后的结果复制到控件中

BitBlt?UserControl.hdc,?0,?0,?m_rcControl.Right,?m_rcControl.Bottom,?m_hMemDC,?0,?0,?vbSrcCopy

Private?Sub?UserControl_Paint()

在Form1的Form_Activate事件里输入以下代码:

Private?Sub?Form_Activate()

Me.UserControl11.Translucence

最后,你将看到一个粉红色半透明的方块,该方块就是你所需要的半透明的控件.至于控件的其它功能,可以自行扩展.

怎么样让VB窗口变透明?

如何用VB实现半透明控件

Private Const LWA_COLORKEY = H1

Private Sub SetFormTranslucency(hwnd As Long, crKey As Long, bAlpha As Byte, dwFlags As Long)'实现半透明窗体

Dim rtn As Long

rtn = GetWindowLong(hwnd, GWL_EXSTYLE)

rtn = rtn Or WS_EX_LAYERED

SetWindowLong hwnd, GWL_EXSTYLE, rtn

SetLayeredWindowAttributes hwnd, crKey, bAlpha, dwFlags

Private Sub Form_Load()

可以实现窗体和窗体上的控件全都半透明,透明度可调

以上就是土嘎嘎小编为大家整理的vb.net窗体半透明相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章