vb能否图片背景透明?

来源:百度知道 编辑:UC知道 时间:2024/06/07 15:56:59
我用vb6编写程序,希望能使一图片能够利用timer控件变成动画,但是图片的背景却无法设置成透明的。我试过用透明gif,会导致刺眼的闪烁;我用printpicture,很麻烦(要做两张图)而且很慢;用FoxAlphaBlend之类的函数只能在form_load()中管用,无法用在timer上……请问到底有什么好办法解决这个问题?不要跟我说把背景用ps设成窗体背景!谢谢了!
1楼的答复我复制到vb里不能用……说GetPixel是未定义的……

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

这个函数可以!

例子如下:
Public Sub NTSetfrmRgn()
'-------------------------------------------------
' 确定窗体形状及透明度
' Color 取得0,0处象素的颜色,即要裁减的区域的颜色
' SetLayeredWindowAttributes 设置透明度及窗体形状
'-------------------------------------------------
Dim WindowExs As Long
Set FormPic = LoadPicture(FormFile) '"pic\test.bmp")
FClock.Picture = FormPic
FClock.Height = ScaleY(FormPic.Height, vbHimetric, vbTwips) '把图像大小的Himetric(0.01毫米)单位变为twips单位
FClock.Width = ScaleX(FormPic.Width, vbHimetric, vbTwips)
Color = GetPixel(FClock.hdc, 0, 0) ' 这里是取图片左上角的象素颜色作为去除色,当然如果只做透明就不用!
WindowExs = GetWindowLong(FClock.hwnd, GWL_EXSTYLE)
WindowExs = WindowExs Or WS_EX_LAY