当前位置:编程学习 > VB >>

怎样去掉image控件上图片旁边的白颜色

刚开始学vb6.0

2个问题:

1、我的程序窗口背景图是一个圆,我想运行后就出来这个圆,但是窗口是方的,所以旁边会有白颜色存在,我想去掉白颜色,也就是除了圆之外其余就是透明的显示,如何实现。

2、窗口中加了个image控件,上面放了个圆形的图片,结果image控件是方的,旁边也出来了白颜色。我用photoshop生成了只包含圆形图片的透明文件,可惜vb6都不支持图片格式。我需要在窗口中放一个圆形的图片,如何实现。

因为本人刚开始学习vb6,所以有人解答的话希望能够详细些,谢谢了。 --------------------编程问答-------------------- 你这就是做异型窗体吧.

给你个代码,你把不想显示的颜色都设置为白色,就可以去掉了:

Option Explicit

'异型窗体示例
'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
--------------------编程问答-------------------- Me.Visible = False: Me.Visible = True

这一句多余了

复制过来的那个代码里是在已经显示窗体的情况下改变的,这个窗体还未显示,会自动刷新的. --------------------编程问答-------------------- 按照你说的做了,有效,万分感谢。

第二个问题怎么做能说说吗? --------------------编程问答-------------------- learning --------------------编程问答-------------------- 先处理一下图.

要显示的原图中,需要透明的地方用黑色填充;

再做一幅掩码图,将原图中需要显示的部分用黑色填充,需要透明的地方用白色填充.

即掩码图只有黑白两色.

把你想要显示的图放到imgAC里去,然后再把掩码图放到imgAM里去.两个控件都不可见即可.

Me.PaintPicture imgAM.Picture, pX, pY, , , , , , , vbSrcAnd
Me.PaintPicture imgAC.Picture, pX, pY, , , , , , , vbSrcInvert

pX与pY是想要显示的矩形的左上角. --------------------编程问答-------------------- 把图片做成GIF格式的,再用Image控件显示。。。 --------------------编程问答-------------------- 这个帖子是不是说的图片透明问题.
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,