龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VB开发 >

透明的窗体(From)上显示背景透通图

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
这是一个很奇特的功能,首先要让Form变透明,接着,放一张背景透明的.gif图进来,如此,这变成一个透明的form,上面有许多Button,且图不会是一个方形,而会让图的背景透通。但有一
这是一个很奇特的功能,首先要让Form变透明,接着,放一张背景透明的.gif图进来,如此,这变成一个透明的form,上面有许多Button,且图不会是一个方形,而会让图的背景透通。但有一点要注意,这种透明的Form不可以移动,否则一移就会发现它似乎不是透明的,这个很不好解释,建议您一开始设定Form的BorderStyle=2大小可变可移动,而去移动与更动小大,便可以知道。因此,在设计阶段时,一定要设BorderStyle=0没有框线,这样子您的Form才不会有问题。
  首先我使用以下的程式码令Form变透明
  
  注:有适当的软体(如MSPhotEditor)可以将图变成背景透通(引用老怪之言)
  
  Me.AutoRedraw=True
  hBitmap=CreateCompatibleBitmap(Me.hdc,0,0)
  SelectObjectMe.hdc,hBitmap
  Me.Refresh
  而透明的图形呢,那需要那一种背景透通性的.GIF档,在Form上放一个ImageControl,将
  图放到ImageControl,那就OK了注释:需一个ImageControl,一个Command1
  OptionExplicit
  PrivateDeclareFunctionSelectObjectLib"gdi32"(ByValhdcAsLong,ByValhObjectAsLong)AsLong
  PrivateDeclareFunctionDeleteObjectLib"gdi32"(ByValhObjectAsLong)AsLong
  PrivateDeclareFunctionCreateCompatibleBitmapLib"gdi32"(ByValhdcAsLong,ByValnWidthAsLong,ByValnHeightAsLong)AsLong
  PrivatehBitmapAsLong
  
  PrivateSubCommand1_Click()
  UnloadMe
  EndSub
  
  PrivateSubForm_Load()
  注释:事先请设form的BorderStyle=0没有框线
  Me.AutoRedraw=True
  SetImage1.Picture=LoadPicture("e:ubbles.gif")注释:请自行找一个背景透明的图
  hBitmap=CreateCompatibleBitmap(Me.hdc,0,0)
  SelectObjectMe.hdc,hBitmap
  Me.Refresh
  EndSub
  
  PrivateSubForm_Unload(CancelAsInteger)
  DeleteObjecthBitmap
  EndSub->

精彩图集

赞助商链接