怎样去掉image控件上图片旁边的白颜色
刚开始学vb6.02个问题:
1、我的程序窗口背景图是一个圆,我想运行后就出来这个圆,但是窗口是方的,所以旁边会有白颜色存在,我想去掉白颜色,也就是除了圆之外其余就是透明的显示,如何实现。
2、窗口中加了个image控件,上面放了个圆形的图片,结果image控件是方的,旁边也出来了白颜色。我用photoshop生成了只包含圆形图片的透明文件,可惜vb6都不支持图片格式。我需要在窗口中放一个圆形的图片,如何实现。
因为本人刚开始学习vb6,所以有人解答的话希望能够详细些,谢谢了。 --------------------编程问答-------------------- 你这就是做异型窗体吧.
给你个代码,你把不想显示的颜色都设置为白色,就可以去掉了:
Option Explicit--------------------编程问答-------------------- Me.Visible = False: Me.Visible = True
'异型窗体示例
'BY 嗷嗷叫的老马
'
'http://www.m5home.com/
Private Const WS_EX_LAYERED As Long = &H80000
Private Const GWL_EXSTYLE As Long = -20
Private Const LWA_ALPHA As Long = &H2
Private Const LWA_COLORKEY As Long = &H1
Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" ( _
ByVal hwnd As Long, _
ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" ( _
ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32.dll" ( _
ByVal hwnd As Long, _
ByVal crKey As Long, _
ByVal bAlpha As Byte, _
ByVal dwFlags As Long) As Long
Private Sub Form_Load()
'对指定的颜色进行去除.你把你做好的图片需要去除的地方设置为白色(最后一句vbWhite指定,可设为其它色),再设为窗体Picture属性里就行了
Dim lRet As Long
Me.BorderStyle = 0 '运行时改变窗体样式
Me.Caption = Me.Caption
Me.Visible = False: Me.Visible = True
lRet = GetWindowLong(Me.hwnd, GWL_EXSTYLE)
lRet = lRet Or WS_EX_LAYERED
SetWindowLong Me.hwnd, GWL_EXSTYLE, lRet
SetLayeredWindowAttributes Me.hwnd, vbWhite, 0, LWA_COLORKEY '这里指定了要去除的颜色
End Sub
Private Sub Form_DblClick()
'双击窗体即可退出
Unload Me
End Sub
这一句多余了
复制过来的那个代码里是在已经显示窗体的情况下改变的,这个窗体还未显示,会自动刷新的. --------------------编程问答-------------------- 按照你说的做了,有效,万分感谢。
第二个问题怎么做能说说吗? --------------------编程问答-------------------- learning --------------------编程问答-------------------- 先处理一下图.
要显示的原图中,需要透明的地方用黑色填充;
再做一幅掩码图,将原图中需要显示的部分用黑色填充,需要透明的地方用白色填充.
即掩码图只有黑白两色.
把你想要显示的图放到imgAC里去,然后再把掩码图放到imgAM里去.两个控件都不可见即可.
Me.PaintPicture imgAM.Picture, pX, pY, , , , , , , vbSrcAnd
Me.PaintPicture imgAC.Picture, pX, pY, , , , , , , vbSrcInvert
pX与pY是想要显示的矩形的左上角. --------------------编程问答-------------------- 把图片做成GIF格式的,再用Image控件显示。。。 --------------------编程问答-------------------- 这个帖子是不是说的图片透明问题.
补充:VB , 基础类