用VB实现不规则窗体

  在第一个值(POINTAPI类型)中储存了第一个点的位置,在接下来的值中又储存了第二个点的位置。由于数组是连续开放的,所以可以定义一个POINTAPI类型的数组,这个数组储存着各个点的位置信息,运行时将第一个值传给lpPoint即可达到要求。至于数组元素有多少是必要的,也就是说窗体形状是由多少个点构成的多边形由nlount参数决定。若nlount的值大于数组的元素个数,由于超出数组元素个数的点的位置是不确定的,因此会产生意想不到的结果。最后一个参数nPlyfillMode是用来选择填充模式的。下面举一例子画一正五边形的窗体:

  Private Sub Form_load()

  Di Daw(1 To 5) As POINTAPI

  For i=1 To 5

  daw(i).X=400+250*cos(((i-1)*0.4+0.1)*3.1416

  daw(i).y=300-250*Sin(((i-1)*0.4+0.1)*3.1416)

  Next

  SetWindowsRgn hWnd,CreatePolygonRgn(daw(1),5,1),True

  End Sub

  运行即可产生一正五边形的窗体(笔者电脑分辨率设为800×600)。

  如果有一幅作为窗体背景的圆片要沿一定轮廓将其中的某一部分做为窗体时应如何确定各轮廊点的位置呢?很简单,在正常的窗体中通过MouseMore()事件将所指各点的X、Y值一一记下,然后写到数组中去即可完成(必要时应进行比例计算)。

  说到此,理论上是很完美了,但真正做出一个好的界面并不是一件很容易的事。为了使您的界面更漂亮,给您提三条建议:

  1将前述的那个“关闭”按钮做得小些,最好用位图按钮,使上面显示一个小“叉号”,还可以加上一个最小化按钮(设置Windows State=Minimize),帮助按钮等让它们排成一排,放在适当位置(例如右上有),一副正规样子。

  2如果选择一幅不规则图形做窗体,最好用photoshop等图像处理软件为整个图形做窗体,最好用photoshop等图像处理软件为整个图形加上一个按钮表面颜色的边框,并在框上画若干条亮线和暗线使边框有立体的感觉。

  3在选取图形的复杂处或弧线处一定要尽可能多的取点才能使该处理显现得十分平滑。

  好了,到此为止,相信你感觉到创建一个不规则窗体的最困难之处其实就是选择并制做一幅好的图片。祝你好运!

  本文所有程序均在VB 5.0中文企业版中运行通过。(全文完)(哈尔滨 赵恒滨)