首页   |   IT资讯   |   综合资讯   |   开发   |   软件   |   问答   |   网络技术   |   网络综合
更多:
当前位置:首页 » 手机数码
文章正文

如何实现不规则圆形窗体的显示?

类型:转载   责任编辑:asp   日期:2007/03/01

    

如何实现窗体的异形显示?如窗体是个不规则的圆形。  
  谢谢大家!

推荐阅读

  • 才华横溢的孙燕姿成为利盟形象代言人 [详细内容]
  • 关注网络虚拟财产:正在蔓延的无规则游戏 [详细内容]
  • 巧用呼叫转移 [详细内容]
  • 分析:新奇业务层出不穷 GOOGLE徘徊在十字路口 [详细内容]
  • 人气漫画《死神》将改编成游戏 [详细内容]
  • 使用键盘锁的省电技巧 [详细内容]
  • 希捷硬盘被LG高清晰等离子电视所采用 [详细内容]
  • 网友回答:
    网友:lihonggen0

    我们还是来看一下在vb6中的实现,vb6中实现  
      做一个古怪的窗口必须要用的也是此程序中最重要的一个函数就是setwindowrgn  
      它的功能就是对指定的窗口进行重画,把这个窗口你选择的部分留下其余的部分抹掉  
      参数:hwnd:你所要重画的窗口的句柄,比如你想重画form1则应该让此参数为form1.hwnd  
                hrgn:你要保留的区域的句柄,这个句柄是关键,你需要通过别的渠道来获得  
      在这里的区域是由combinergn合成的新区域  
                bredram:是否要马上重画,一般设为true  
      函数combinergn将两个区域组合为一个新区域  
      函数createrectrgn为创建一个由点x1,y1和x2,y2描述的矩形区域  
      函数createellipticrgn为创建一个x1,y1和x2,y2的椭圆区域  
      用deleteobject这个函数可删除gdi对象,比如画笔、刷子、字体、位图、区域以及调色板等等。对象使用的所有系统资源都会被释放  
       
      以下是vb6的代码:  
              private   declare   function   createellipticrgn   lib   "gdi32"   (byval   x1   as   long,   byval   y1   as   long,   byval   x2   as   long,   byval   y2   as   long)   as   long  
              private   declare   function   createrectrgn   lib   "gdi32"   (byval   x1   as   long,   byval   y1   as   long,   byval   x2   as   long,   byval   y2   as   long)   as   long  
              private   declare   function   combinergn   lib   "gdi32"   (byval   hdestrgn   as   long,   byval   hsrcrgn1   as   long,   byval   hsrcrgn2   as   long,   byval   ncombinemode   as   long)   as   long  
      private   declare   function   setwindowrgn   lib   "user32"   (byval   hwnd   as   long,   byval   hrgn   as   long,   byval   bredraw   as   boolean)   as   long  
              private   declare   function   deleteobject   lib   "gdi32"   (byval   hobject   as   long)   as   long  
              private   const   rgn_diff   =   4  
       
              private   sub   form_load()  
                      dim   rgn   as   long  
                      dim   rgnrect   as   long  
                      dim   rgndest   as   long  
       
                      rgn   =   createellipticrgn(0,   0,   me.width   /   screen.twipsperpixelx,   me.height   /   screen.twipsperpixely)  
                      rgnrect   =   createrectrgn((me.width   /   screen.twipsperpixelx   -   20)   /   2,   (me.height   /   screen.twipsperpixely   -   20)   /   2,   (me.width   /   screen.twipsperpixelx   +   20)   /   2,   (me.height   /   screen.twipsperpixely   +   20)   /   2)  
                      rgndest   =   createrectrgn(0,   0,   1,   1)  
              combinergn   rgndest,   rgn,   rgnrect,   rgn_diff  
      setwindowrgn   me.hwnd,   rgndest,   true  
              call   deleteobject(rgnrect)  
              call   deleteobject(rgndest)  
              end   sub  
       
              private   sub   command1_click()  
                      end  
              end   sub  
     

    .
      最佳浏览:1024X768 MSIE
    ©2007 jqmk.com.cn All Rights Reserved