创造、享受......

Just Run

导航

创建异型窗体

最近在做一个项目,里面有一个模块式关于船舶泊位策划的,根据客户给我们的资料,要在屏幕上显示船形的图片,由于涉及到缩放于是我考虑自己写个一个控件,这个控件从picturebox继承过来,里面提供一个方法,实现船形的界面,可是问题出来了,由于每个船舶是一个自定义控件,就会出现两条船遮挡的问题,于是我试着将他的底色进行透明,可是它透的是它的容器的底色,就出现了下面的样子:


效果很不理想。后来我发现在picturebox 有一个属性:region(区域),就是在指定的区内显示,而在区域外却无效,于是对代码进行了修改,加入以下的代码:

       dim oPath = New GraphicsPath
        Dim point(6) As Point
        point(0) = New Point(20, 0)
        point(1) = New Point(0, 50)
        point(2) = New Point(20, 100)
        point(3) = New Point(180, 100)
        point(4) = New Point(200, 75)
        point(5) = New Point(200, 25)
        point(6) = New Point(180, 0)
        oPath.AddPolygon(point)
        ship.Region = New Region(oPath)
注:region在 vs 2003中不会从提示中出来,但是你输入完全后会生效;在vs 2005中会自动出来。
于是出现了下面的效果:


综上所述,当你创建异型窗体的时候,可以考虑用region 属性,可以给你带来意想不到的效果!

posted on 2005-08-31 21:02  时光倒立  阅读(461)  评论(3)    收藏  举报