在画图中处理,背景就不是透明的。怎样保留图片的透明效果?用什么工具
解决方案 »
- 请教高手SendMessage的用法
- 在VB中,利用text和updown组合控件在text中怎样显示文字信息啊?谁能帮我看看?
- 高分求解:关于 Excel 2003 中行控制的问题
- 大虾求教!!怎样统计word中的行数???
- ADO更改一条记录的值为何出错?
- 请问怎样用VB程序自动生成、添加、修改、保存、调用.INI文件?(就是在程序运行中调用,但不添加任何VB部件及OCX控件)能给个范例吗?谢
- 局域网中如果想删除或更改网络中另一台机子之中的文件,象这样可能吗?
- 如何用vb实现打印条形码?
- 谁知道那里能下MSDN集合啊~?
- 各位大侠快来求我
- 怎样折分Excel表格?
- 超简单问题,在线等~~!
住一个矩形的区域(即鸟的图片矩形)。我们可以通过以下方法使图片上非鸟的其它部
分变透明:我们可以利用一个 WinAPI 函数 BitBlt 对图形进行一系列的位操作来达到
此目的。
函数声明:
Declare Function BitBlt Lib "gdi32" Alias "BitBlt" (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 dwRop As Long) As Long
参数解释:
目标环境:hDestDC——目标设备环境;x——左上角;y——顶端;nWidth——宽;
nHeight——高
源环境:hSrcDC——源设备环境;xSrc——源左上角;ySrc——源顶端;
dwRop——位处理操作,如 vbSrcAnd;vbSrcAnd;vbSrcCopy;vbSrcErase;
vbSrcInvert 等
(目标环境或源环境只能是 Picture, Form 或 Printer 对象。各单位为象素。)
进行处理之前,我们需要对鸟的图片进行处理:先复制一份相同的图形,将其应该透明
之处(鸟的背景)设置为黑色(设此图为sPic),再将另一图做以下处理:要复制的地
方(鸟)设置为黑色,其余地方设置(鸟的背景)为白色(设此图为Mask)。
设树的图形为名dPic。
最后,请加入以下代码:
R=BitBlt(dPic.hdc,0,0,sPic.Width,sPic.Height,Mask.hdc,0,0,vbScrCopy)
R=BitBlt(dPic.hdc,0,0,sPic.Width,sPic.Height,sPic.hdc,0,0,vbScrInvert)
后记:
1、VB 中的 PaintPicture 方法提供类似功能,但速度不及此方法;
2、在此方法上稍微加入一些代码,就不难实现动画的显示。
3、VB 例子中的 CallDlls 就使用此方法。
程序代码如下: Private Sub Form_Load() Dim TU1,TU2 As Picture '定义TU1和TU2为图片对象 Dim X0=0:Y0=0 as Integer Image1.Visible=False:Set TU1=Image1 Image2.Visible=False:Set TU2=Image2 AutoRedraw=True Form1.PaintPicture TU1,x0,y0,,,,,,,&&H8800C6 Form1.PaintPicture TU2,x0,y0,,,,,,,&&H660046 End Sub 上述方法同样适用于在图片框内放置背景透明的图片。 掩模覆盖法优点是不需要附加任何外接控件,缺点是需要为每幅源图分别制作掩模图,工作量较大。
————————————————————————————————————————
提问: 请问VB中如何制作透明的按钮?
请问该如何设定, 才会使按钮只显示出前景的文字, 而背景显示出表单上自己贴上的底图?用 Label 摹拟 CommandButton ,范例如下:
Option Explicit
Private Sub Form_Load()
Label1.BackStyle = 0
Label1.BorderStyle = 1
Label1.ForeColor = RGB(255, 255, 0)
Label1.FontSize = 16
Label1.FontBold = True
Label1.FontName = "标楷体"
Label1.Caption = "按钮一"Me.Picture = LoadPicture("d:\image\02.jpg")
End Sub
Private Sub Label1_Click()
MsgBox "执行一号副程?