创建异型窗体
最近在做一个项目,里面有一个模块式关于船舶泊位策划的,根据客户给我们的资料,要在屏幕上显示船形的图片,由于涉及到缩放于是我考虑自己写个一个控件,这个控件从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 属性,可以给你带来意想不到的效果!
效果很不理想。后来我发现在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 属性,可以给你带来意想不到的效果!
浙公网安备 33010602011771号