該樓層疑似違規已被系統折疊 隐藏此樓檢視此樓
我以前曾經問過大家半透明對話框怎麼做,後來一直沒有找到答案。直到有一天,雲霞散人告訴了我一個api函數。。。
好吧,我承認,我說的這個不是半透明“文本框”,而是半透明“picture框”!想要顯示文字的話,用picture框的print就行。至于滾動條之類的,請有志之士實作吧。而且目前的這個子程式,隻能實作picture框直接貼在form上的半透明。
實作picture的半透明隻需要兩個api函數。
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
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
我把我的遊戲中的子程式寫出來:
'設定對話框請大家自行設定picture的背景色或圖檔
Public Sub openTxtTalk()
Dim LrProps As rBlendProps
Dim LnBlendPtr As Long
Me.ScaleMode = 3
With picTalk
.ScaleMode = 3
.Cls
.CurrentX = 10
.CurrentY = 10
End With
LrProps.tBlendAmount = 128'不透明度
CopyMemory LnBlendPtr, LrProps, 4
With Me
AlphaBlend txtTalk.hDC, 0, 0, txtTalk.Width, txtTalk.Height, .hDC, txtTalk.Left, txtTalk.Top, txtTalk.Width, txtTalk.Height, LnBlendPtr
End With
picTalk.Refresh
End Sub
隻要短短的這麼幾行代碼就可以了,雖然很不成熟,但是做成養成遊戲裡的半透明對話框還是夠的。�