首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

image怎么透明处理

2012-02-02 
image如何透明处理在image中放置一个BMP图片.怎么让该图片的blue蓝色部分做透明处理.比方一个四方的图片中

image如何透明处理
在image中放置一个BMP图片.   怎么让该图片的blue蓝色部分做透明处理.比方一个四方的图片中一个人头.人头周围与四方部分全部用蓝色填充.VB显示的时候.只显示这个人头.其他蓝色部分做透明处理.应该怎么做才好?

[解决办法]
想少用代码的话使用 GIF Movie Gear 把bmp转换为gif,同时设置透明色

要不然就要好多api函数调用了

[解决办法]
还是转换一下的好
调用API太多了,人会头晕的
祝你好运~~~~~~~~
[解决办法]

   Public Declare Function SetLayeredWindowAttributes Lib "user32 " (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long

   '具体可以使用的常量及其用法

  Const LWA_ALPHA=&H2 '表示把窗体设置成半透明样式
  Const LWA_COLORKEY=&H1 '表示不显示窗体中的透明色


  具体例子

  程序代码

  Module1

Public Declare Function SetLayeredWindowAttributes Lib "user32 " (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Public Const WS_EX_LAYERED = &H80000
Public Const GWL_EXSTYLE = (-20)
Public Const LWA_ALPHA = &H2
Public Const LWA_COLORKEY = &H1
Public Declare Function GetWindowLong Lib "user32 " Alias "GetWindowLongA " (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32 " Alias "SetWindowLongA " (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long


  Form1

Private Sub Form_Load()
Dim rtn As Long

  rtn = GetWindowLong(Me.hwnd, GWL_EXSTYLE) '取的窗口原先的样式
rtn = rtn Or WS_EX_LAYERED '使窗体添加上新的样式WS_EX_LAYERED
SetWindowLong Me.hWnd, GWL_EXSTYLE, rtn '把新的样式赋给窗体

  SetLayeredWindowAttributes me.hwnd, 0, 192, LWA_ALPHA

     '把窗体设置成半透明样式,第二个参数表示透明程度
     '取值范围0--255,为0时就是一个全透明的窗体了

  End Sub


  第二种使用方法

  SetLayeredWindowAttributes Me.hWnd, &H0, 0, LWA_COLORKEY
     '表明不显示窗体中的透明色
     '而第二个参数表示透明色为黑色,并且你可以用RGB函数来指定颜色值



'具体可以使用的常量及其用法

' Const LWA_ALPHA = &H2 '表示把窗体设置成半透明样式
' Const LWA_COLORKEY = &H1 '表示不显示窗体中的透明色


'具体例子

' 程序代码



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 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
Const WS_EX_LAYERED = &H80000
Const GWL_EXSTYLE = (-20)
Const LWA_ALPHA = &H2
Const LWA_COLORKEY = &H1
Private Sub Command1_Click()
Dim rtn As Long

rtn = GetWindowLong(Me.hwnd, GWL_EXSTYLE) '取的窗口原先的样式
rtn = rtn Or WS_EX_LAYERED '使窗体添加上新的样式WS_EX_LAYERED
SetWindowLong Me.hwnd, GWL_EXSTYLE, rtn '把新的样式赋给窗体

SetLayeredWindowAttributes Me.hwnd, 0, 180, LWA_ALPHA

'把窗体设置成半透明样式,第二个参数表示透明程度
'取值范围0--255,为0时就是一个全透明的窗体了
End Sub

Private Sub Command2_Click()
'第二种使用方法

SetLayeredWindowAttributes Me.hwnd, &H0, 0, LWA_COLORKEY
'表明不显示窗体中的透明色
'而第二个参数表示透明色为黑色,并且你可以用RGB函数来指定颜色值
End Sub

------解决方案--------------------



学习一下楼上的

热点排行