欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

vb.net窗體半透明,vb窗體透明改哪個(gè)屬性

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

簡(jiǎn)單的部分透明比較難做,不過(guò)可以換個(gè)方式考慮一下。

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序設(shè)計(jì)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了興賓免費(fèi)建站歡迎大家使用!

把本問(wèn)題轉(zhuǎn)換成在VB.NET 2005環(huán)境下創(chuàng)建不規(guī)則窗體(=普通窗體 - 透明部分)問(wèn)題,解決方法就很多了,網(wǎng)上也有許多例子。如 章立民 的書里就詳細(xì)講過(guò)。

大致思路如下:

1。將backgroundimage設(shè)成一個(gè)位圖(點(diǎn)陣圖)

2.將Transparaencykey設(shè)成位圖的背景顏色(位圖最取背景單純,單純部分將成為透明部分)

3.如需要可以將formborderstyle設(shè)為none,會(huì)移除標(biāo)題欄,并需要手動(dòng)編寫窗體移動(dòng)、關(guān)閉等動(dòng)作代碼,

vb 窗體透明 控件半透明

PS:一下代碼是復(fù)制的,因?yàn)镚oogle一下就有

‘添加新模塊:

Option Explicit

'透明接口調(diào)用

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 GetwindowLong Lib "user32" _

Alias "GetwindowLongA" ( _

ByVal hwnd As Long, _

ByVal nIndex As Long) _

As Long

Private Declare Function SetLayeredwindowAttributes Lib "user32" ( _

ByVal hwnd As Long, _

ByVal crKey As Long, _

ByVal bAlpha As Long, _

ByVal dwFlags As Long) _

As Long

Private Const GWL_EXSTYLE = (-20)

Private Const LWA_ALPHA As Long = H2

Private Const WS_EX_LAYERED As Long = H80000

'設(shè)置窗口透明度

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

Dim tmpLog As Long

If hwnd = 0 Then Exit Sub

If lngAlpha = 0 And lngAlpha = 255 Then

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如何設(shè)置半透明窗體和控件

先建一個(gè)標(biāo)準(zhǔn)EXE工程,然后添加一個(gè)用戶控件,把以下代碼復(fù)制到控件代碼中,再把此控件放置到Form1上。

[vb]?view plain?copy

Option?Explicit

Private?Declare?Sub?CopyMemory?Lib?"kernel32"?Alias?"RtlMoveMemory"?(Destination?As?Any,?Source?As?Any,?ByVal?Length?As?Long)

Private?Declare?Function?GetClientRect?Lib?"user32"?(ByVal?hwnd?As?Long,?lpRect?As?RECT)?As?Long

Private?Declare?Function?ClientToScreen?Lib?"user32"?(ByVal?hwnd?As?Long,?lpPoint?As?POINTAPI)?As?Long

Private?Declare?Function?ScreenToClient?Lib?"user32"?(ByVal?hwnd?As?Long,?lpPoint?As?POINTAPI)?As?Long

Private?Declare?Function?SetRect?Lib?"user32"?(lpRect?As?RECT,?ByVal?X1?As?Long,?ByVal?Y1?As?Long,?ByVal?X2?As?Long,?ByVal?Y2?As?Long)?As?Long

Private?Declare?Function?OffsetRect?Lib?"user32"?(lpRect?As?RECT,?ByVal?X?As?Long,?ByVal?Y?As?Long)?As?Long

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

End?Type

Private?Declare?Function?DrawText?Lib?"user32"?Alias?"DrawTextA"?(ByVal?hdc?As?Long,?ByVal?lpStr?As?String,?ByVal?nCount?As?Long,?lpRect?As?RECT,?ByVal?wFormat?As?Long)?As?Long

Private?Const?DT_SINGLELINE?=?H20

Private?Const?DT_CENTER?=?H1

Private?Const?DT_VCENTER?=?H4

Private?Declare?Function?GetDC?Lib?"user32"?(ByVal?hwnd?As?Long)?As?Long

Private?Declare?Function?ReleaseDC?Lib?"user32"?(ByVal?hwnd?As?Long,?ByVal?hdc?As?Long)?As?Long

Private?Declare?Function?CreateCompatibleDC?Lib?"gdi32"?(ByVal?hdc?As?Long)?As?Long

Private?Declare?Function?DeleteDC?Lib?"gdi32"?(ByVal?hdc?As?Long)?As?Long

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?Declare?Function?DeleteObject?Lib?"gdi32"?(ByVal?hObject?As?Long)?As?Long

Private?Declare?Function?ShowWindow?Lib?"user32"?(ByVal?hwnd?As?Long,?ByVal?nCmdShow?As?Long)?As?Long

Private?Const?SW_SHOW?=?5

Private?Const?SW_HIDE?=?0

Private?Declare?Function?BitBlt?Lib?"gdi32"?(ByVal?hDestDC?As?Long,?ByVal?X?As?Long,?ByVal?Y?As?Long,?ByVal?nWidth?As?Long,?ByVal?nHeight?As?Long,?ByVal?hSrcDC?As?Long,?ByVal?xSrc?As?Long,?ByVal?ySrc?As?Long,?ByVal?dwRop?As?Long)?As?Long

Private?Declare?Function?AlphaBlend?Lib?"msimg32"?(ByVal?hDestDC?As?Long,?ByVal?X?As?Long,?ByVal?Y?As?Long,?ByVal?nWidth?As?Long,?ByVal?nHeight?As?Long,?ByVal?hSrcDC?As?Long,?ByVal?xSrc?As?Long,?ByVal?ySrc?As?Long,?ByVal?widthSrc?As?Long,?ByVal?heightSrc?As?Long,?ByVal?blendFunct?As?Long)?As?Boolean

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

End?Sub

Public?Sub?Translucence()

Dim?hdc?As?Long

Dim?tPt?As?POINTAPI

'獲得控件當(dāng)前位置和大小

ClientToScreen?UserControl.hwnd,?tPt

ScreenToClient?UserControl.ContainerHwnd,?tPt

Call?GetClientRect(UserControl.hwnd,?m_rcControl)

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

'創(chuàng)建一幅內(nèi)存位圖

If?m_hMemBmp??0?Then

DeleteObject?(SelectObject(m_hMemDC,?m_hMemBmpPrev))

End?If

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

m_hMemBmpPrev?=?SelectObject(m_hMemDC,?m_hMemBmp)

'隱藏控件

ShowWindow?UserControl.hwnd,?SW_HIDE

DoEvents

'保存控件容器的圖像到內(nèi)存位圖中

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

'通過(guò)alpha效果進(jìn)行半透明渲染

UserControl.AutoRedraw?=?True

AlphaBlend?m_hMemDC,?0,?0,?m_rcControl.Right,?m_rcControl.Bottom,?UserControl.hdc,?0,?0,?m_rcControl.Right,?m_rcControl.Bottom,?5242880

UserControl.AutoRedraw?=?False

'顯示控件

ShowWindow?UserControl.hwnd,?SW_SHOW

'將渲染后的結(jié)果復(fù)制到控件中

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

End?Sub

Private?Sub?UserControl_Paint()

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

End?Sub

在Form1的Form_Activate事件里輸入以下代碼:

[vb]?view plain?copy

Private?Sub?Form_Activate()

Me.UserControl11.Translucence

End?Sub

最后,你將看到一個(gè)粉紅色半透明的方塊,該方塊就是你所需要的半透明的控件。至于控件的其它功能,可以自行擴(kuò)展。

怎么樣讓VB窗口變透明?

'函數(shù)SetLayeredWindowAttributes ' 使用這個(gè)函數(shù),可以輕松的實(shí)現(xiàn)半透明窗體。按照微軟的要求,透明窗體窗體在創(chuàng)建時(shí)應(yīng)使用WS_EX_LAYERED參數(shù)(用CreateWindowEx),或者在創(chuàng)建后設(shè)置該參數(shù)(用SetWindowLong),我選用后者。全部函數(shù)、常量聲明如下: 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是透明方式,可以取兩個(gè)值:當(dāng)取值為L(zhǎng)WA_ALPHA時(shí),crKey參數(shù)無(wú)效,bAlpha參數(shù)有效;當(dāng)取值為L(zhǎng)WA_COLORKEY時(shí),bAlpha參數(shù)有效而窗體中的所有顏色為crKey的地方將變?yōu)橥该鳎@個(gè)功能很有用:我們不必再為建立不規(guī)則形狀的窗體而調(diào)用一大堆區(qū)域分析、創(chuàng)建、合并函數(shù)了,只需指定透明處的顏色值即可,哈哈哈哈!請(qǐng)看具體代碼。 Private Const WS_EX_LAYERED = H80000 Private Const GWL_EXSTYLE = (-20) Private Const LWA_ALPHA = H2 Private Const LWA_COLORKEY = H1 Private Sub Command1_Click() Unload Me End Sub Private Sub Form_Load() Dim rtn As Long rtn = GetWindowLong(hwnd, GWL_EXSTYLE) rtn = rtn Or WS_EX_LAYERED SetWindowLong hwnd, GWL_EXSTYLE, rtn SetLayeredWindowAttributes hwnd, 0, 150, LWA_ALPHA End Sub

如何用VB實(shí)現(xiàn)半透明控件

Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Const WS_EX_LAYERED = H80000

Private Const GWL_EXSTYLE = (-20)

Private Const LWA_ALPHA = H2

Private 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 SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long

Private Sub SetFormTranslucency(hwnd As Long, crKey As Long, bAlpha As Byte, dwFlags As Long)'實(shí)現(xiàn)半透明窗體

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

End Sub

Private Sub Form_Load()

Call SetFormTranslucency(Me.hwnd, 0, 200, 2) '窗體半透明,200為透明值

End Sub

可以實(shí)現(xiàn)窗體和窗體上的控件全都半透明,透明度可調(diào)

新聞名稱:vb.net窗體半透明,vb窗體透明改哪個(gè)屬性
分享網(wǎng)址:http://chinadenli.net/article34/hescpe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管定制開發(fā)企業(yè)建站ChatGPT自適應(yīng)網(wǎng)站移動(dòng)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)