该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我以前曾经问过大家半透明对话框怎么做,后来一直没有找到答案。直到有一天,云霞散人告诉了我一个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
只要短短的这么几行代码就可以了,虽然很不成熟,但是做成养成游戏里的半透明对话框还是够的。�