VB 如何将窗口形状做成不规则的形状

比如说一个椰树的形状,如果在易语言中则是置外形图片(#椰树,取颜色值(255,255,255)(其中“取颜色值(255,255,255)”就是椰树周围的空白部分的颜色在V... 比如说一个椰树的形状,如果在易语言中则是置外形图片(#椰树,取颜色值(255,255,255)(其中“取颜色值(255,255,255)”就是椰树周围的空白部分的颜色
在VB中该怎么弄?
还有,VB有没有像易语言的那个图片、声音资源管理的,如果没有,在一个代码中要填一个图片该怎么填,是写图片的地址吗?
展开
 我来答
我为人人服务队
推荐于2016-05-23 · TA获得超过1505个赞
知道小有建树答主
回答量:799
采纳率:0%
帮助的人:794万
展开全部
VB设置不规则窗体没有易语言方便

这一段api

一、矩形窗体

这里的矩形窗体可不是普通的矩形窗体,而是将正常窗体中任意选中的矩形区域作为窗体,当然也可以没有边框和标题栏。新建一模块,在模块中声明API函数SetWindowsRgn()和CreateRect Rgn():

Declare Function SetWindow Rgn Lib“user32”(ByVal hWnd As Long,ByVal hRgn As Long,ByVal bRedraw As Boolean)As long Declare Function createRect Rgn Lig“gdi32"(ByVal X1 As Long,ByVal Y1 As Long,ByVal X2 As Long,ByVal Y2 As long)As long()

建议用API文本查看器粘贴,然后编写Form-load()事件:

Private Sub Form-load()

SetWindowsRgn hwnd,CreateRectRgn(50,100,500,300)True

End Sub

运行即可看到出现了一矩形窗体。显然CreateRect Rgn()函数声明中的X1、Y1、X2、Y2参数决定了选择区域的位置及大小。注意,如果就这样生成·EXE文件,它是不能正常关闭的,因为它没有“关闭”按钮。所以应该在运行时的可视区域中添加一按钮,在它的click()事件中写入END即能使程序能正常退出。以下各例亦同此要求。

二、带圆角的矩形窗体

在上例的模块中添加声明API函数Create Round RectRgn():

Delare Function CreateRoundRectRgn Lib“gdi32”(ByVal X1 As Long,ByVal Y1 As Long,ByVal X2 As Long,ByVal Y2 As Long,ByVal X3 As Long,ByVal Y3 As Long)As Long

在声明中,X1、Y1、X2、Y2意义同函数CreateRectRgn()是一样的,而X3、Y3两个参数代表了横向、纵向拐角处的曲率半径。将上例的Form_lod()事件改写为:

Private Sub Form_load()

SetWindowRgn hWnd,CreateRoundRectRgn(50,100,500,300,150,100),True

End Sub

运行即可看出在矩形的四个角处已经呈现圆弧状了。

三、椭圆窗体

在上例的模块中再添加声明API函数CreateEllipticRgn():

Declare function CreateEllipticRgn Lib“gdi31”(ByVal X1 As Long,ByVal Y1 As Long,ByVal X2 As Long,ByVal Y2 As Long)As Long

各参数不用多说,现举一例如下:

Private Sub Form-load()

SetWindowRgn hwnd,CreateEllipticRgn(50,100,500,300),True

End Sub

四、任意形状的窗体

这是最高境界了,当然也比较麻烦。在上例的模块中再添加声明API函数CreatePolygonRgn():

Declare Function CreatePolygonRgn Lib“gdi32”(lpPoint As POINTAPI,ByVal nCount As Long,ByVal nPolyFill Mode As Long)As Long

该函数有3个参数,其中lpPoint决定了窗体的形状,它是一个POINTAPI类型的变量。在此模块的最前面进行如下的类型声明:Type POINTAPI
X AS long
Y As long
End Type

您也许感到奇怪,两个(X和Y)long型的存储空间就可以储存任意复杂的窗体开头信息吗?当然不是,Create PolygonRgn()函数在使用lpPoint参数的时候,lpPoint相当于一个指针,指向一个连续存储空间的第一个值。
天马行空0721
2011-07-17 · TA获得超过128个赞
知道答主
回答量:163
采纳率:0%
帮助的人:125万
展开全部
Vb实现的都是WINDOWS的标准窗体,想让窗体变成任意形状,是不太可能的事情。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式