VB窗体美化

合集下载

VB编程之路-如何让界面美化

VB编程之路-如何让界面美化
VB编程之路-如何让界面美化
减小字体 增大字体
如果大家用过《Windows优化大师》,肯定会被它的界面所倾倒,其实利用ActiveSkin 就可以办到,甚至更爽,但是如果要做的共享软件只是一个文件,在加上几个OCX累赘,似乎很是不爽,看看VB是怎么利用别的东东来实现的吧。
首先新建一个EXE工程,再在窗体上拖几个Label控件,看看Label 的强大功能吧,原理就是利用Label来模拟一个按钮,但是首先要将Label控件的属性要调一下,
LblBtn(Index).BackColor = LBL_WHEN_MOUSE_DOWN ’临时改变LblBtn背景颜色
End Sub
Private Sub LblBtn_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) ’鼠标在LblBtn上面移动时触发该事件
Appearance 0
BorderStyle 1
MutilLine True
千万不要设置ScrollBars属性,否则会影响效果
在Form的Load事件中初始化TextBox
Dim bkColor As Long
Private Sub Form_Load()
bkColor=RGB(235,235,235)
Else
LblBtn(Index).BackColor = LBL_WHEN_MOUSE_MOVE ’将背景设为鼠标移动的背景
End If
Next Count
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

修改窗体的标题(caption属性)

修改窗体的标题(caption属性)
在窗口的上部有两个列表框,左 边为对象列表框,里面列出了目 前这个窗体所包含的所有对象的 名称。比如其中的“form”代表 程序中的窗体,“text1”代表 窗体中使用的文体到本框 “command1”代表窗体中的 命令按钮。右边的列表框中有许 多的英文单词,这些单词就针对 左边选中的对象所可能发生的所 有事件,其中有我们很熟悉的 “click(单击)”。
第二课
熟悉Visual Basic 的工作环境
• 用VB编写第一个程序之后,我们对于怎样在VB 中工作有了一些初步的了解,下面我们就来具体 熟悉一下VB工作环境中各个部分的功能以及它们 的用法。
工具箱 窗体设计器
代码编辑器
属性窗口
鼠标指针 标签 框架
复选框 组合框
水平滚动条 定时器
目录列表框 形状 图像
窗体设计器
在VB中,我们所制作的 应用程序中的每一个显 示窗口叫做一个窗体 (Form),我们可以在 窗体中添加各种控件或 图形来追寻自己所希望 的程序界面。
简单的应用程序可能只 要一个窗体,而设计一 个复杂的应用程序就需 要许多个窗体。
编程者在设计程序的同 时,就可以在窗体设计 器中直观地看到程序界 面 的样子。这也正是 VB中“visual”一词 的意义所在。
属性窗口
在编写第一个程序时,我们已 经与属性窗口打过不少交道了, 那么,属性窗口究竟是干什么 用的呢?
我们所制作的窗体以及其中的 控件,都具有大小、位置、颜 色等等这样一些性质。在VB中, 我们把这些性质称为“属性”。 属性窗口就是用来列出和修改 目前所选定的窗体或控件的所 有属性的设置值。
属性列表中左边一列是属性的名称
右边一列是每一属性当前的设置值
这么多的属性名为什么不译成中文 呢?这可不是微软的汉化人员偷懒 而是因为这些英文单词将会用程序 代码中。对于我们初学者来说,经 常会用来的属性屈指可数,所以大 可不必将这些英文单词所吓倒。况 且,属性窗口还提供了两个有利条 件来帮助我们理解这些属性的用途 一个是我们可以选择排序选项卡中 的“按分类序”这一项,这样属性 就会按照不同的用途分组排列;另 外在属性列表下部的提示框中会显 示出对当前选定属性的中文解释。

利用VB做精美桌面

利用VB做精美桌面

【VB】利用VB做美化界面如果大家用过《Windows优化大师》,肯定会被它的界面所倾倒,其实利用ActiveSkin 就可以办到,甚至更好,但是如果要做的共享软件只是一个文件,在加上几个OCX累赘,似乎很是不好,看看VB是怎么利用别的东西来实现的吧。

首先新建一个EXE工程,再在窗体上拖几个Label控件,看看Label 的强大功能吧,原理就是利用Label来模拟一个按钮,但是首先要将Label控件的属性要调一下,Name: LblBtn,BorderStyle: 1,Appearance: 0,Alignment: 2,这样一个按钮的雏形就已经出来了,如果工程量很大,可以将多个Label控件的Name 属性设为一样的,对于按钮的识别就要靠识别Index属性了,为了方便起见,在进入到代码编辑窗口,输入以下代码:Private Const LBL_BACK_COLOR = &HE0E0E0 ’正常时Label控件的背景色Private Const LBL_WHEN_MOUSE_MOVE = &HC0C0C0 ’鼠标移动时Label的背景色Private Const LBL_WHEN_MOUSE_DOWN = &H808080 ’鼠标按下时Label的背景色再在Form的Load事件中输入以下内容Private Sub Form_Load()Dim Count As IntegerFor Count = 0 To 3 ’请将此出的3换成你的LblBtn数量的个数-1LblBtn(Count).BackColor=LBL_BACK_COLOR ’初始化LblBtn的背景Next CountEnd Sub然后再在LblBtn的MouseMove和MouseDown事件中来搞定剩余部分:Private Sub LblBtn_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)’当鼠标按在LblBtn上时LblBtn(Index).BackColor = LBL_WHEN_MOUSE_DOWN ’临时改变LblBtn背景颜色End SubPrivate Sub LblBtn_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)’鼠标在LblBtn上面移动时触发该事件Dim Count As IntegerDoEvents ’暂时将系统控制权教给系统If Button Then Exit Sub ’如果按钮被按下就退出该过程For Count = 0 To 3If Count <> Index Then ’如果按下的不是其它按钮LblBtn(Index).BackColor = LBL_BACK_COLOR ’将背景设为正常ElseLblBtn(Index).BackColor = LBL_WHEN_MOUSE_MOVE ’将背景设为鼠标移动的背景End IfNext CountEnd SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single,Y As Single)Dim Count As IntegerDoEventsFor Count=0 To 3LblBtn(Count).BackColor=LBL_BACKCOLOR ’恢复背景Next CountEnd本来利用Windows的消息系统来完成这一“艰巨”的任务最简单,可问题就来了,Label 控件没有窗口句柄怎么办?可是此问题与题无关,写了会有骗稿费之:)OK,Label控件就讲到这里,在来说说TextBox控件,各位看关恐怕看惯了白颜色的背景,那么就换换颜色以养养俺们那和绵羊一样的眼睛(为什么说绵羊?俺也不知道),可是VB提供的RGB函数弄出来的颜色不是怎么好看,这里俺来教大家一个小Tip,RGB函数的Red,Green,Blue这三个参数若一样,则产生的颜色是灰度,当然越接近白颜色越好,但也不能让各位看不出来,俺建议TextBox的背景为RGB(235,235,235),各位还是实战一下,将一个TextBox拖到窗体上,属性设置如下Appearance 0BorderStyle 1MutilLine True千万不要设置ScrollBars属性,否则会影响效果在Form的Load事件中初始化TextBoxDim bkColor As LongPrivate Sub Form_Load()bkColor=RGB(235,235,235)Text1.BackColor=bkColorEnd Sub在Form和Text1的MouseMove事件中:Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single,Y As Single)Text1.BorderStyle = 0End SubPrivate Sub Text1_MouseMove(Button As Integer, Shift As Integer, X As Single,Y As Single)DoEventsText1.BorderStyle = 1End Sub在按下F5试试是不是很Cool?可能各位看关玩过石器时代,一定会对里面的TextBox的效果感到很爽,VB还不是可以做到,有焦点的控件可以使用SetFocus方法来为其设置焦点,可是一个窗体上如果控件太多了,一个一个的用SetFocus是不是太傻了?这一节的主角就是--------API函数,首先声明:Private Type POINTAPIx As Longy As LongEnd TypePrivate Declare Function GetCursorPos Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI) As LongPrivate Declare Function WindowFromPoint Lib "user32" Alias "WindowFromPoint" (ByVal xPoint As Long, ByVal yPoint As Long) As LongPrivate Declare Function SetFocus Lib "user32" Alias "SetFocus" (ByVal hwnd As Long) As Long但是这里的SetFocus会和控件的SetFocus会搞混淆,改改吧,Private Declare Function nSetFocus Lib "user32" Alias "SetFocus" (ByVal hwnd As Long) As Long只要Alias指向的接口是对的前面的函数名称简直就是摆设,在建立一个过程:Public Function sSetFocus() As LongDim CPos As POINTAPI,Successfull As Boolean,hWnd As LongDoEventsSuccessfull =GetCursorPos(CPos)If Not Successfull Then Exit Sub ’如果未成功则退出该过程hWnd=WindowFromPoint(CPos.x,CPos.y)sSetFocus=nSetFocus(hWnd)End Sub在窗体上放一个Timer控件,Interval 属性设为100,就是0.1秒,在Timer1控件的Timer事件中填入sSetFocus,在运行一下看看,效果怎么样?可是有的先生小姐要问了,TextBox难道就不能用ScrollBar吗?非也非也,选工程->部件->Microsoft Windows Common Controls-2 6.0 (SP3)就是你的答案,至于卷动TextBox就去研究SendMessage函数吧,否则又有骗稿费之嫌,如果想作绿色软件,不想用控件,可以用俺前面讲到的Label控件,利用字体 Webdings 来模拟ScrollBar,需要注意的是,如果模拟ScrollBar,上下左右箭头分别是5,6,3,4,别忘了把字体设为Webdings再来讲讲窗体的美化,其实将BorderStyle属性设为0就是很好的2D美化;)可是,这样一来,问题又来了,怎么办?凡事都要请API来帮忙,这里需要两个API,一下是该API的声明:Public Declare Function ReleaseCapture Lib "user32" Alias "ReleaseCapture" ()As Long 注释:这个API是用来解下鼠标的追踪器,关于他的过多用法以及详细介绍可以写信向俺咨询,还有Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long’这个该不要俺多介绍了吧Public Const HTCAPTION = 2 ’代表窗体的标题区Public Const WM_NCLBUTTONDOWN = &HA1 ’表示非工作区左键按下原理很简单,卸下鼠标追踪器后向Form发送一个移动窗体的消息,其实做到这一点的方法很多,但俺个人认为这一种最简单,添加一个过程:Public Sub MoveForm(hWnd As Long)DoEventsReleaseCaptureSendMessage hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&End Sub在Form的MouseMove事件中:Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single,Y As Single)If Button=vbLeftButton Then MoveForm hWnd’如果按下鼠标左键就移动窗体End Sub台下的这位小姐又纳闷了,可是光秃秃的窗体没有了标题栏也不好看,俺要向这为小姐推荐俺的东东-ActiveX控件,ToolSign,需要的人可以写信给俺联系,该控件需要在代码编辑区域内添加一下代码:’一下声明是用在ToolSign的 AutoQuit属性的Public Const EXIT_FORCE = 2 ’注意,在VB中运行的时候如果选用此退出方式,VB也会退出Public Const EXIT_MESSAGE = 1 ’由操作系统发送关闭消息Public Const EXIT_CUSTOM = Not (EXIT_FORCE Or EXIT_MESSAGE)’自定义将其注册后在部件栏中把e-Dogkid Studio Tools Sign打钩,添加到工具箱中,双击加入到窗体中,在Form的Load事件中添加一下初始化代码:Private Sub Form_Load()With Sign1.AutoQuit = EXIT_CUSTOM.ParentsHWND = hWnd ’填了此属性可以直接用ToolSign来移动窗体而不需要前面的代码End WithEnd SubSign1的Click事件Private Sub Sign1_Click()End ’关闭程序End Sub在Form的Resize事件中添加一下代码:Private Sub Form_Resize()Sign1.Width = WidthEnd Sub如果想让窗体可以改变大小,可以修改一下属性Caption ""BorderStyle 2或5ControlBox False不知道各位看关见过爆炸试的窗体没有?,没有见过可以从俺要另外一个俺自己的ActiveX DLL,我的那个东东其实是给我的Software作运行库的,各位若不嫌弃,可以用用,注册后在工程->引用->e-Dogkid Runtime Library然后在窗体Load事件中输入:Private Sub Form_Load()Dim System As e_Dogkid_Runtime_Library.SystemSet System = New e_Dogkid_Runtime_Library.SystemShowSystem.BoomIt hDC, 60, Width, Height, Left, TopSet System = NothingEnd Sub。

vb 窗体特效

vb 窗体特效

vb 窗体特效2010年09月22日星期三 15:36关于用V B 制作不规则窗口的文章,在各种杂志报纸、网站上面也不知提过多少回了,我都有点不好意思再谈。

但是我们编程序不仅仅要实现功能,更要寻求最佳的实现方案。

本着这样的原则,让我们再来回顾一下这个老命题,也向大家介绍一下我的心得。

Windows 提供了一个API 函数SetWindowRgn,凭着这个函数,我们可以把窗口设置为任意形状。

问题在于,我们如何来获取所需的区域形状。

一般情况下,我们可以使用CreateEllipticRgn创建椭圆区域,CreateRectRgn创建矩形区域,CreateRoundRectRgn创建圆角矩形区域。

如果我们需要不规则的形状呢?那就可以使用CreatePolygonRgn。

可是这个函数需要的参数之一是包含整个不规则区域轮廓坐标点的数组,对于一个稍微复杂一点的形状就可能需要几百个坐标点,要获取和改动这些坐标点都是相当麻烦的。

有没有更为方便的方法呢?答案是肯定的。

(不然我在这儿瞎折腾什么?)原理是用一张图片作为窗体的背景,图片中有一种颜色是我们不需要的,称为透明色。

然后编程一行行地扫描图片,将透明色的点删去,而把有用的像素点合并成一块区域,如此便得到所需的形状了。

这个思路并不是我想出来的,《电脑爱好者》1999 年第21 期P56 上就有一篇用Delphi 实现的文章。

也许有许多VB 爱好者同我一样,希望能在VB 中实现这样的功能,却发现行扫描的速度奇慢,我最初实现的程序起码用了5 分钟才显示出窗体。

究其原因是我们选错了兵刃。

一开始我使用GetPixel 来获取每一点的颜色,这样每取一个点都需要通过设备上下文hdc 从图片中读取信息,这就是造成龟速的罪魁祸首了。

正确的方法是使用GetBitmapBits函数。

它可以将位图中每一点颜色信息一下子读到一个数组中,以后只要扫描这个数组就行了,这将极大地提高运行速度。

vb界面美化

vb界面美化

2010-11-02 22:45【转】vb界面美化vb界面如何美化一、网上搜索VB皮肤控件,一般为了更加美化都是做异性窗体,用图片做背景,然后去掉窗体边框,设置窗体颜色为透明,这个在这里就不详细说,还要加上拖动无边框窗体的代码,这样就可以了,至于其他按钮也可以用图片代替下面这个图片是我做的仿酷狗播放器,全是由图片构成的二、利用VB做美化界面如果大家用过《Windows优化大师》,肯定会被它的界面所倾倒,其实利用ActiveSkin 就可以办到,甚至更好,但是如果要做的共享软件只是一个文件,在加上几个OCX累赘,似乎很是不好,看看VB是怎么利用别的东西来实现的吧。

首先新建一个EXE工程,再在窗体上拖几个Label控件,看看Label 的强大功能吧,原理就是利用Label来模拟一个按钮,但是首先要将Label控件的属性要调一下,Name: LblBtn,BorderStyle: 1,Appearance: 0,Alignment: 2,这样一个按钮的雏形就已经出来了,如果工程量很大,可以将多个Label 控件的Name属性设为一样的,对于按钮的识别就要靠识别Index属性了,为了方便起见,在进入到代码编辑窗口,输入以下代码:Private Const LBL_BACK_COLOR =&HE0E0E0 ’正常时Label控件的背景色Private Const LBL_WHEN_MOUSE_MOVE =&HC0C0C0 ’鼠标移动时Label的背景色Private Const LBL_WHEN_MOUSE_DOWN =&H808080 ’鼠标按下时Label的背景色再在Form的Load事件中输入以下内容Private Sub Form_Load()Dim Count As IntegerFor Count =0 To 3 ’请将此出的3换成你的LblBtn数量的个数-1 LblBtn(Count).BackColor=LBL_BACK_COLOR ’初始化LblBtn的背景Next CountEnd Sub然后再在LblBtn的MouseMove和MouseDown事件中来搞定剩余部分:Private Sub LblBtn_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)’当鼠标按在LblBtn上时LblBtn(Index).BackColor =LBL_WHEN_MOUSE_DOWN ’临时改变LblBtn背景颜色End SubPrivate Sub LblBtn_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)’鼠标在LblBtn上面移动时触发该事件Dim Count As IntegerDoEvents ’暂时将系统控制权教给系统If Button Then Exit Sub ’如果按钮被按下就退出该过程For Count = 0 To 3If Count <> Index Then ’如果按下的不是其它按钮LblBtn(Index).BackColor =LBL_BACK_COLOR ’将背景设为正常ElseLblBtn(Index).BackColor =LBL_WHEN_MOUSE_MOVE ’将背景设为鼠标移动的背景End IfNext CountEnd SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)Dim Count As IntegerDoEventsFor Count=0 To 3LblBtn(Count).BackColor=LBL_BACKCOLOR ’恢复背景Next CountEnd本来利用Windows的消息系统来完成这一“艰巨”的任务最简单,可问题就来了,Label控件没有窗口句柄怎么办?可是此问题与题无关,写了会有骗稿费之:)OK,Label控件就讲到这里,在来说说TextBox控件,各位看关恐怕看惯了白颜色的背景,那么就换换颜色以养养俺们那和绵羊一样的眼睛(为什么说绵羊?俺也不知道),可是VB提供的RGB函数弄出来的颜色不是怎么好看,这里俺来教大家一个小Tip,RGB函数的Red,Green,Blue这三个参数若一样,则产生的颜色是灰度,当然越接近白颜色越好,但也不能让各位看不出来,俺建议TextBox的背景为RGB(235,235,235),各位还是实战一下,将一个TextBox拖到窗体上,属性设置如下Appearance 0BorderStyle 1MutilLine True千万不要设置ScrollBars属性,否则会影响效果在Form的Load事件中初始化TextBoxDim bkColor As LongPrivate Sub Form_Load()bkColor=RGB(235,235,235)Text1.BackColor=bkColorEnd Sub在Form和Text1的MouseMove事件中:Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)Text1.BorderStyle = 0End SubPrivate Sub Text1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)DoEventsText1.BorderStyle = 1End Sub在按下F5试试是不是很Cool?可能各位看关玩过石器时代,一定会对里面的TextBox的效果感到很爽,VB还不是可以做到,有焦点的控件可以使用SetFocus方法来为其设置焦点,可是一个窗体上如果控件太多了,一个一个的用SetFocus是不是太傻了?这一节的主角就是--------API函数,首先声明:Private Type POINTAPIx As Longy As LongEnd TypePrivate Declare Function GetCursorPos Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI) As LongPrivate Declare Function WindowFromPoint Lib "user32" Alias "WindowFromPoint" (ByVal xPoint As Long, ByVal yPoint As Long) As Long Private Declare Function SetFocus Lib "user32" Alias "SetFocus" (ByValhwnd As Long) As Long但是这里的SetFocus会和控件的SetFocus会搞混淆,改改吧,Private Declare Function nSetFocus Lib "user32" Alias "SetFocus" (ByVal hwnd As Long) As Long只要Alias指向的接口是对的前面的函数名称简直就是摆设,在建立一个过程:Public Function sSetFocus() As LongDim CPos As POINTAPI,Successfull As Boolean,hWnd As LongDoEventsSuccessfull =GetCursorPos(CPos)If Not Successfull Then Exit Sub ’如果未成功则退出该过程hWnd=WindowFromPoint(CPos.x,CPos.y)sSetFocus=nSetFocus(hWnd)End Sub在窗体上放一个Timer控件,Interval 属性设为100,就是0.1秒,在Timer1控件的Timer事件中填入sSetFocus,在运行一下看看,效果怎么样?可是有的先生小姐要问了,TextBox难道就不能用ScrollBar吗?非也非也,选工程->部件->Microsoft Windows Common Controls-2 6.0 (SP3)就是你的答案,至于卷动TextBox就去研究SendMessage函数吧,否则又有骗稿费之嫌,如果想作绿色软件,不想用控件,可以用俺前面讲到的Label控件,利用字体 Webdings 来模拟ScrollBar,需要注意的是,如果模拟ScrollBar,上下左右箭头分别是5,6,3,4,别忘了把字体设为Webdings再来讲讲窗体的美化,其实将BorderStyle属性设为0就是很好的2D美化;)可是,这样一来,问题又来了,怎么办?凡事都要请API来帮忙,这里需要两个API,一下是该API的声明:Public Declare Function ReleaseCapture Lib "user32" Alias "ReleaseCapture" () As Long 注释:这个API是用来解下鼠标的追踪器,关于他的过多用法以及详细介绍可以写信向俺咨询,还有Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)As Long’这个该不要俺多介绍了吧Public Const HTCAPTION = 2 ’代表窗体的标题区Public Const WM_NCLBUTTONDOWN =&HA1 ’表示非工作区左键按下原理很简单,卸下鼠标追踪器后向Form发送一个移动窗体的消息,其实做到这一点的方法很多,但俺个人认为这一种最简单,添加一个过程:Public Sub MoveForm(hWnd As Long)DoEventsReleaseCaptureSendMessage hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&End Sub在Form的MouseMove事件中:Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)If Button=vbLeftButton Then MoveForm hWnd’如果按下鼠标左键就移动窗体End Sub台下的这位小姐又纳闷了,可是光秃秃的窗体没有了标题栏也不好看,俺要向这为小姐推荐俺的东东-ActiveX控件,ToolSign,需要的人可以写信给俺联系,该控件需要在代码编辑区域内添加一下代码:’一下声明是用在ToolSign的 AutoQuit属性的Public Const EXIT_FORCE = 2 ’注意,在VB中运行的时候如果选用此退出方式,VB也会退出Public Const EXIT_MESSAGE = 1 ’由操作系统发送关闭消息Public Const EXIT_CUSTOM = Not (EXIT_FORCE Or EXIT_MESSAGE)’自定义将其注册后在部件栏中把e-Dogkid Studio Tools Sign打钩,添加到工具箱中,双击加入到窗体中,在Form的Load事件中添加一下初始化代码:Private Sub Form_Load()With Sign1.AutoQuit = EXIT_CUSTOM.ParentsHWND =hWnd ’填了此属性可以直接用ToolSign来移动窗体而不需要前面的代码End WithEnd SubSign1的Click事件Private Sub Sign1_Click()End ’关闭程序End Sub在Form的Resize事件中添加一下代码:Private Sub Form_Resize()Sign1.Width = WidthEnd Sub如果想让窗体可以改变大小,可以修改一下属性Caption ""BorderStyle 2或5ControlBox False不知道各位看关见过爆炸试的窗体没有?,没有见过可以从俺要另外一个俺自己的ActiveX DLL,我的那个东东其实是给我的Software作运行库的,各位若不嫌弃,可以用用,注册后在工程->引用->e-Dogkid Runtime Library 然后在窗体Load事件中输入:Private Sub Form_Load()Dim System As e_Dogkid_Runtime_Library.SystemSet System = New e_Dogkid_Runtime_Library.SystemShowSystem.BoomIt hDC, 60, Width, Height, Left, TopSet System = NothingEnd Sub三、能够美化VB6软件界面的软件/s?wd=actskin4下载这个SDK,里面有个控件很不错,三行代码改外观:/u/20090303/02/fb11597e-66af-4f65-adb1-91014add6 89a.html这个SDK带了皮肤编辑器,默认有XP,OFFICE2007,VISTA等几种皮肤,当然也可以自己编辑个性皮可以用皮肤软件,像VBcrazy说的SkinSharp。

VB中界面的设计原则及美化

VB中界面的设计原则及美化
grid1. SelStartCol = 0 grid1. SelStartRow = 0 grid1. SelEndCol = grid1. Cols - 1 grid1. SelEndRow = grid1. Rows - 1 grid1. Picture = Picture1. Picture End Sub Private Sub Form-Load ()
在开发应用程序中 ,为了使其更具吸引 力 ,有个良好的界面是非常重要的 。界面的设 计和美化不仅影响到它本身外观的可观赏性 , 而且对应用程序的可操作性也有不可忽视的 作用 。一个有着良好界面的应用程序往往会 给用户一个好印象 ,使用户易于接受并积极使 用 。良好的界面并不是只有专业的美术人员 才能设计出来 ,在 VB 中通过在窗体上拖曳控 件的方式为创建用户界面提供了非常简便的 方法 ,因此了解用户界面的设计原则及美化的 方法 ,是每个程序设计人员都要做的事情 。
For X = 1 To 80 hBrush = CreateSolidBrush ( RGB ( 0 , 0 , Col2 or) ) RetVal = FillRect (Me. hDC ,FillArea ,hBrush) RetVal = DeleteObject (hBrush) Color = Color - 4 If Color < 0 Then Color = 0 FillArea. top = FillArea. bottom FillArea. bottom = FillArea. bottom + StepSize Next Me. ScaleMode = OldMode End Sub 按 F5 运行 ,就会出现一个以从上至下 、由 浅至深的渐变蓝色为背景的窗口 。对上述代 码稍加改动 ,便可制作出各种颜色和水平方向 的渐变背景 。

用VB.NET轻松制作特效窗体

用VB.NET轻松制作特效窗体

用轻松制作特效窗体体是Windows应用程序的基础新一代的开发工具Visual Basic Net为设计制作窗体提供了更多简单而丰富的方法无需再求助于复杂而易错的API函数我们就可以轻松制作多种特效窗体轻松制作透明窗体VB NET可以轻松制作出任一透明度的窗体我们只要在窗体的属性窗口中将 Opacity 属性设置为一个介于(完全透明)与(完全不透明)之间的值就可以了 Dim frm As FrmTrans = New FrmTrans()frm Opacity = frm ShowDialog() 轻松制作始终位于最上层的窗体在VB 中要制作一个始终位于最上层的窗体我们只能求助于令人头痛的API 函数然而在 NET 中我们只要简单设置窗体的 TopMost 属性就可实现同样效果了!例如Dim frm As frmTopMost = New frmTopMost()frm TopMost = Truefrm Show() 轻松制作不可见的窗体如果要编写一个不让别人发现的隐藏程序制作不可见的窗体就是必须实现的第一步窗体的可见性通常由 Visible 属性控制但是如果希望Windows 应用程序的主窗体在应用程序启动时不可见您将会发现将它的 Visible 属性设置为 False 的方法无效窗体总会自己显示出来(这是因为启动窗体的生存期决定了应用程序的生存期)虽然如此我们还是可以通过简单将应用程序的启动设置为一个模块从而从窗体的生存期分出应用程序的生存期轻松实现不可见的窗体在下面这个例子中窗体在特定的时间内自动隐藏()在 Visual Basic 中右击项目并选择添加模块以将模块添加到Windows 应用程序()在已添加的模块(或类)内创建可作为项目启动对象的 Main 函数 Sub main()Dim f As New Form ()f Visible = FalseWhile Hour(Date Now) < 如果当前时间早于点窗体自动隐藏Application DoEvents()End Whilef ShowDialog()End Sub 轻松编写托盘程序托盘程序作为一类特殊的窗体其快捷图标显示在系统托盘中窗体本身则隐藏不可见在 NET之前版本的VB中编写托盘程序是十分困难的但是VB NET提供的新的NotifyIcon组件却使VB初学者也能轻松编写一个这样的程序新建Windows应用程序设置主窗体Opacity属性为 FormBorderStyle属性为None ShowInTaskbar属性为False 这样窗体将在启动后隐藏在窗体上放置一个NotifyIcon组件NotifyIcon 一个ContextMenu(弹出菜单)组件ContextMenu 并根据需要为ContextMenu 添加菜单项设置NotifyIcon 的ICON属性这个图标就是应用程序出现在系统托盘中的快捷图标设置NotifyIcon 的Text属性为 VB NET托盘程序这就是鼠标移动到托盘图标时弹出的文字说明设置NotifyIcon 的ContextMenu属性为ContextMenu 也就是右键单击快捷图标时的弹出菜单为ContextMenu OK 按F 运行!几乎不用编写代码一个托盘程序就这样轻松实现了lishixinzhi/Article/program/net/201311/13831。

vb窗口形状改变(精品)

vb窗口形状改变(精品)

---------------------------------------------------------------最新资料推荐------------------------------------------------------vb窗口形状改变(精品)用用 设计各种形状的窗体界面设计各种形状的窗体界面窗体是程序设计最常见,最普通,也是最容易受到程序员忽视的编程对象。

一般来说,在 Visual 针对窗体的编程是不需要人为介入的,因为可视化编程工具 Visual 已经按照窗体的缺省状态实现了。

但是在最近遇到的应用程序中。

我们发现越来越多的应用程序中使用到各种不同规则的窗体,这些不同规则的窗体给应用程序带来异常的情趣和不同平常的效果的同时,也促使使用者思考这样一个问题,如何创建这些窗体?在Visual 中提供了一种简单、直接创建不规则窗体的方法,本文的主要内容就是探讨一下这些方法具体的实现过程。

下面就来详细介绍在 中实现五种不同规格窗体的方法,即:椭圆形、扇形、圆形、环形和三角形。

掌握了这五种不同形状窗体的实现方法后,我想对于其他规则的窗体就不应该有什么问题了。

Visual Basic .Net 中创建、使用 MDI 窗体也是本文的重要内容之一,MDI 是 Multi DocumentInterface 的简称,即:多文档界面,MDI 最早出现于 Windows2.0 中,最先使用到 MDI1 / 17的应用程序是 Excel 电子表格。

为了方便使用者同时能够操作多份电子表格,Excel 就采用了MDI 来解决这个问题。

到了 Windows3.1 中,MDI 在应用程序中得到了更大范围的应用。

其中 Windows3.1 中的程序管理器和文件管理器都采用了 MDI。

目前 MDI 在应用程序中依然被广泛采用。

下面就首先来介绍一下 Visual 创建不规则窗体的相关知识和具体实现方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学习窗体美化不错的知识====================================================================================相信大家看过许多形状怪异的窗口吧?可是在VB里,系统提供的只是一个矩形的窗体。

如何在VB里实现这种异形窗体呢?其实原理很简单。

首先,在内存中构建一个想要的图形,再通过API函数将窗体设置为此形状,最后将图片放上去就可以了。

关键在于如何构建这个想要的图形。

让我们看看下面这个图:。

这张图片中既有白色,也有其他彩色,而我们想要的颜色正是除白色以外的其它颜色。

我们可以这样想:在内存中创建一幅一样大小的空的图像,然后只把我们需要的颜色(即非白色)输入内存。

这样,就可以创建出我们想要的图形了。

以上是原理,接下来介绍几个API函数。

GetPixel:获取指定对象的某个点的颜色。

定义为:Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long其中hdc为图形对象的句柄,x、y为坐标。

SelectObject:向内存中的指定地点输入图形。

定义为:Public Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long其中hdc为内存中图形对象的句柄,hObject为欲输入的图像。

CreateCompatibleDC:在内存中创建一个与指定对象一样的场景(可以理解为图像)。

定义为:Public Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long其中hdc为指定对象的句柄。

DeleteObject:删除GDI对象(在这里用来删除用完的内存中的图形)。

记住,用完后释放资源是非常重要的!定义为:Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long其中hObject为欲删除的对象。

CreateRectRgn:在内存中创建一个矩形,返回值为矩形的句柄。

定义为:Public Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long其中X1、Y1为矩形左上角的点坐标,X2、Y2为矩形右下角的点坐标。

CombineRgn:将两个图形结合为一个图形。

定义为:Public Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long其中hDestRgn为合成后的图形句柄,hSrcRgn1、hSrcRgn2为两个欲合成的图形,nCombineMode 为合成模式(包括交集部分、并集部分、并集以外部分、不相交部分,我们需要的是并集部分)SetWindowRgn:使指定窗口形状成为指定形状。

定义为:Public Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long其中hwnd为指定窗口的句柄,hRgn为指定图形句柄,bRedraw为选择是否立即重画窗口。

SetWindowPos:为窗口指定一个新位置和状态。

定义为:Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long其中hwnd为目标窗口的句柄,hWndInsertAfter设置窗口的新位置,x、y设置了窗体的坐标,cx、cy设置了窗体的新大小,wFlags设置了窗口的状态。

还有一个需要的常数:RGN_OR,是CombineRgn函数的模式之中的并集模式,定义为:Public Const RGN_OR = 2为了方便,我将这些代码制作成了一个函数。

以下为代码+注释:Public Sub CreateImageForm(Form As Object, Imagebox As Object, strFile As String, BGColor As Long)'Form为目标窗体,Imagebox是放图片用的,strFile是源图片路径,BGColor是不需要的颜色Dim T As Integer '图形横坐标Dim R As Integer '图形纵坐标DoEvents '防止死机Imagebox.AutoSize = True '使图片框自动调整大小,大小为图片大小Imagebox.BorderStyle = 0 '使图片框无边框,防止边框占用图形位置Imagebox.Picture = LoadPicture(strFile) '将图片读入图片框。

图片框是用来更好的控制窗体大小Form.Width = Imagebox.WidthForm.Height = Imagebox.Height '这两行将窗体大小调整为图片框大小Imagebox.Visible = False '图片框不是让用户看的Form.Picture = Imagebox.Picture '图片框没有了,窗体就应该显示图形Form.ScaleMode = 3 '设置度量用的单位FW = Form.ScaleWidthFH = Form.ScaleHeight '将窗体内部大小赋值给变量,方便读取Dim DC As Long '内存中图形句柄Dim BMP As Long '不知道是什么句柄Dim rgn As Long '临时用的矩形的句柄Dim rgnTotal As Long '欲得到的图形句柄Dim SX As Long '搜索用的变量DC = CreateCompatibleDC(Form.hdc) '创建一个与目标窗体一样大的内存图形空间BMP = SelectObject(DC, LoadPicture(strFile)) '将图形放入刚刚创建的空间中rgnTotal = CreateRectRgn(0, 0, 0, 0) '初始化目标图形For T = 0 To FW '逐行搜索R = 0: Do '搜索前横坐标归零While GetPixel(DC, T, R) = BGColor And R <= FH '当找到需要留下的点后退出搜索R = R + 1WendSX = R '记录下此行所需部分开始的点坐标While GetPixel(DC, T, R) <> BGColor And R <= FH '当找到需要要除去的点后退出搜索 R = R + 1WendIf SX <= R - 1 Then '此时R-1为此行所需部分结束的点坐标rgn = CreateRectRgn(T, SX, T + 1, R) '创建这一行中刚才搜索到的矩形CombineRgn rgnTotal, rgnTotal, rgn, RGN_OR '将刚才创建的矩形并入目标图形中 DeleteObject rgn '销毁临时用的小矩形,以释放系统资源(重要)End IfLoop Until R >= FH '此行结束后进入下一个搜索循环Next TSetWindowRgn Form.hwnd, rgnTotal, True '将目标窗体形状设置为已经创建好的图形SetWindowPos Form.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE + SWP_SHOWWINDOW'将目标窗体设置在所有窗口的最顶层,且不能移动、不能改变大小End Sub最后,还需要注意:有时图片里在需要的部分中也会出现背景颜色(比如说一幅白花的图,背景为白色),此时直接用本函数会造成需要的图片不能完整出现。

怎么办呢?这是你需要准备一张底图。

所谓底图,即只有两种颜色(最好是这样),一种是背景,一种是需要的图的部分。

如上面例子的图的背景图为:。

可以用PS快速地做好背景图。

程序中的操作有所更改,使用函数时用的图应该是背景图,然后在窗体的代码中加一句:Me.Picture = LoadPicture("******") '其中"******"为原图片好,完成了。

PS:囧……写了我半天……再PS:某A等不玩程序的同志们,看了此文莫PIA……。

相关文档
最新文档