计算好显示区域
用SetWindowRgn设置PictureBox的窗体区域
SetWindowRgn VB声明 
Declare Function SetWindowRgn Lib "user32" Alias "SetWindowRgn" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long 
说明 
这是那些很难有人注意到的对编程者来说是个巨大的宝藏的隐含的API函数中的一个。本函数允许您改变窗口的区域。
通常所有窗口都是矩形的——窗口一旦存在就含有一个矩形区域。本函数允许您放弃该区域。这意味着您可以创建圆的、星形的窗口,也可以将它分为两个或许多部分——实际上可以是任何形状 
返回值 
Long,执行成功为非零值,失败为0 
参数表 
参数 类型及说明 
hWnd Long,将设置其区域的窗口 
hRgn Long,将设置的区域的句柄,一旦设置了该区域,就不能使用或修改该区域句柄,也不要删除它 
bRedraw Boolean,若为TRUE,则立即重画窗口 
注解 
为区域指定的所有坐标都以窗口坐标(不是客户坐标)表示,它们以整个窗口(包括标题栏和边框)的左上角为起点
 

解决方案 »

  1.   

    具体方法可参考:
    http://www.dapha.net/vb/list.asp?id=1761
    软件名称 支持自定义皮肤的窗口界面演示  
    软件类型  
    运行环境 VB6.0/Win9x 
    授权方式 免费代码 
    软件大小 207K 
    软件评价  
    上传时间 2002-4-13 
    相关链接 主页 
    本日下载 0  本周:0  总计:0 
    下载地址1 下载 
    软件简介 一个支持自定义皮肤的程序,自带的皮肤采用金山影霸的界面,强烈推荐。FlashView工作组成员晓风残夜制作,http://fvplayer.51.net
      

  2.   

    BOOL TransparentBlt(
      HDC hdcDest,        // handle to destination DC
      int nXOriginDest,   // x-coord of destination upper-left corner
      int nYOriginDest,   // y-coord of destination upper-left corner
      int nWidthDest,     // width of destination rectangle
      int hHeightDest,    // height of destination rectangle
      HDC hdcSrc,         // handle to source DC
      int nXOriginSrc,    // x-coord of source upper-left corner
      int nYOriginSrc,    // y-coord of source upper-left corner
      int nWidthSrc,      // width of source rectangle
      int nHeightSrc,     // height of source rectangle
      UINT crTransparent  // color to make transparent
    );
    不过我在98下面用,好象有问题,说内存不够还有种方法Bitblt掩图,(比较麻烦)
      

  3.   

    bitblt,
    用一幅原玛图片
    和一幅掩码图片