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)
利用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界面美化

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 中通过在窗体上拖曳控 件的方式为创建用户界面提供了非常简便的 方法 ,因此了解用户界面的设计原则及美化的 方法 ,是每个程序设计人员都要做的事情 。
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 运行 ,就会出现一个以从上至下 、由 浅至深的渐变蓝色为背景的窗口 。对上述代 码稍加改动 ,便可制作出各种颜色和水平方向 的渐变背景 。
第7章 VB界面设计

第12页
2. 弹出式菜单 弹出式菜单是显示于窗体上,独立于菜单栏的浮动 式菜单。菜单上显示的项取决于鼠标右键按下时指针的 位置。又称为上下文菜单、快捷菜单。
第13页Βιβλιοθήκη 7.2.1 菜单编辑器“菜单编辑器”的4种可打开方式: 1)“工具”菜单->“菜单编辑器”命令。 2) 工具栏-> 3)窗体上单击鼠标右键,弹出菜单上选 “菜单编辑器”命令。 4)选中窗体后,使用热键“Ctrl+E”。
菜单项 快捷键 Ctrl+O Ctrl+S
文件(&F)
....打开(&O) ....保存(&S)
名 称 menuFile menuOpen menuSave
选中的复选框
有效、可见
有效、可见 有效、可见
....打印(&P)
....退出(&X) 格式(&O) ....粗体(&B)
Ctrl+P
menuPrint
1. 创建和设计MDI窗体及其子窗体 (1) 创建和设计MDI窗体 “工程” → “添加MDI窗体”命令
标准窗 体 MDI窗体
MDI子窗体
第7页
(2) 创建和设计MDI子窗体 创建: MDI子窗体是一个MDIChild属性为True的普通 窗体。要创建多个子窗体,通过窗体类来实现: Public Sub FileNewProc() Dim NewDoc As New frmMDIChild No = No + 1 NewDoc.Caption = "no" & No NewDoc.Show End Sub 设计:可有菜单栏,但必须有文本框。
第3页
3. 设置启动窗体 “工程” → “属性” → “启动对 象”
利用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事件中初始化T extBoxDim 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控件,T oolSign,需要的人可以写信给俺联系,该控件需要在代码编辑区域内添加一下代码:’一下声明是用在T oolSign的 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 T ools 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 = Nothing End Sub。
VB程序界面设计

VB程序界面设计VB是一种基于事件驱动的编程语言,常用于开发Windows应用程序的用户界面。
程序界面设计对于VB程序的用户体验至关重要,好的界面设计可以提升用户的使用体验,提高程序的易用性和功能性。
下面将详细介绍VB程序界面设计的要点和原则。
1.界面布局要合理:VB程序的界面布局应该符合逻辑顺序,使用户可以轻松找到需要的功能和信息。
主要功能模块应该被置于窗口的显眼位置,并按照重要性进行排列。
相似的功能应该归类在一起,方便用户查找。
2.界面元素要直观:VB程序的界面元素,如按钮、文本框、下拉框等控件,应该具有直观的视觉效果,使用户可以直观地了解其功能和用途。
按钮应该有明确的标识,文本框和下拉框应该有默认值或提示文本,以提供相关的信息。
3.功能导航要清晰:VB程序的界面应该提供清晰明了的功能导航,使用户可以方便地找到需要的功能。
一般可以通过菜单栏、工具栏或导航栏来实现功能导航。
菜单栏提供了一级功能导航,工具栏提供了常用功能的快速访问,导航栏提供了程序的整体结构和主要功能。
4.输入反馈要及时:VB程序的界面应该能够及时地给出用户的输入反馈,以提高用户的操作效率和体验。
例如,在用户点击按钮之后,界面应该立即给出相应的反馈,如弹出提示框或改变按钮的状态。
5.错误提示要友好:VB程序的界面应该给出友好的错误提示,帮助用户识别和纠正操作错误。
错误提示信息应该明确、简洁,并且给出相应的解决方案。
例如,当用户输入不合法时,界面可以弹出一个提示框,告诉用户输入不合法,并提供相应的解决方式。
6.界面美观要素:VB程序的界面应该注重美观,以提高用户对程序的好感度和使用欲望。
界面元素的颜色、样式应该协调一致,避免刺眼的颜色和过分复杂的样式。
同时,界面的排版和字体的选择也应该考虑到用户的视觉感受,使界面整体看起来舒适、清晰。
7.简化操作要点:VB程序的界面应尽可能地简化用户的操作步骤,以提高用户的使用效率和舒适度。
可以采用一些技术手段,如自动填充、自动补全、批量操作等,来简化用户的重复操作或冗长操作。
VB应用程序界面设计

VB应用程序界面设计VB应用程序界面设计是指使用Visual Basic开发工具创建应用程序时,对应用程序界面进行设计的过程。
良好的应用程序界面设计可以提高用户体验,增加用户的使用舒适度和工作效率。
下面将从功能布局、色彩搭配、图标设计、交互设计等方面详细介绍VB应用程序界面设计的要点。
首先,功能布局是VB应用程序界面设计的基础。
一个好的界面设计应该合理地组织和布置各个功能模块,使得用户能够快速、方便地找到需要的功能。
在进行功能布局时,应该考虑到各个功能的重要性和使用频率,将常用功能放置在突出醒目的位置,以方便用户的操作。
同时,应尽量避免过多的功能模块和按钮,以免给用户造成使用困扰。
其次,色彩搭配是VB应用程序界面设计的关键。
色彩对于界面的美观度和视觉体验非常重要。
在选择色彩搭配时,应选择温和、和谐的颜色,避免过于鲜艳刺眼的颜色。
同时,还应注意色彩对比度的选择,以确保用户能够清晰地看到界面上的各个元素。
对于不同的功能模块,也可以使用不同的颜色来区分,以便用户在界面上迅速辨识。
再次,图标设计是VB应用程序界面设计的亮点。
合理使用图标可以提高用户的使用效率和工作体验。
图标设计应遵循简约、直观、易懂的原则,尽量避免繁琐和复杂的图案。
同时,为了方便用户直观地了解图标的含义,应使用常见的、易识别的图标,如文件夹、打印、保存等。
图标的颜色也应与界面整体色彩搭配一致,以保持统一的美观度。
最后,交互设计是VB应用程序界面设计的核心。
好的交互设计可以提高用户的满意度和工作效率。
在进行交互设计时,应注重用户的使用习惯和习惯。
例如,将常用的功能按钮放置在易于点击的位置,设置适当的快捷键,使用直观的提示信息等。
同时,还应注意界面的反应速度,尽量避免耗时操作和界面卡顿,以增加用户的使用流畅度。
总之,VB应用程序界面设计是一个综合考量各个因素的过程,需要综合考虑功能布局、色彩搭配、图标设计、交互设计等多个因素,以实现良好的用户体验和工作效率。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
— 58 —
某些应 用 程 序 的 背 景 呈 现 美 观 而 又 富 有 立体感的花纹 ,我们可利用窗体的 Picture 属性 来调用图形文件 ,该方法非常简单且方便 ,但 该方法也有美中不足之处 ,一是图片大小受限 制 ,调整起来也较麻烦 ;二是浪费资源 ,因为一 般的花纹图案基本上都是由小图案重复构成 的。
另外 ,图片与图标的使用也可以提高应用 程序的可视效果 ,在某些时候不用文本而利用 图像就可以更形象地传达信息 。带有表示各 种功能图标的工具栏 ,是一种很有用的界面组 成 ,但如果不能很容易地识别图标所表示的功 能 ,反而会事与愿违 。在设计工具栏图标时 , 应仔细考察现在流行什么标准 ,尽量采用通行 的 、意义明确的图标 ,以免引起用户理解上的 歧义 。只要在整个应用程序中合理的利用各 种显示效果并能保持一致 ,这都能更好的促进 内容与形式的统一 。
2. 2 制作渐变的的界面背景色
— 57 —
VB 中界面的设计原则及美化
在许多应用程序中 ,经常可以看到以某种 颜色由浅至深的渐变作为背景的窗口 。使用 VB 制作这类窗口的方法有不少 ,而通过调用 API 函数绘制渐变的窗口背景色 ,似乎是一种 既简单又节省资源的方法 。
在 module 文件中加入下列声明语句 : Declare Function CreateSolidBrush Lib“GDI” (ByVal crColor As Long) As Integer Declare Function FillRect Lib“USER”(ByVal hDC As Integer ,lpRect As RECT ,ByVal hBrush As Integer) As Integer Declare Function DeleteObject Lib“GDI”(By2 Val hObject As Integer) As Integer Type RECT ’申明变量 left 、top 、right 、bottom 均为 Inte2 ger 类型 End Type Private Sub Form- Paint () ’申明变量 Color 、hBrush 、OldMode 、RetVal 、 StepSize 、X 均为 Integer 类型 ’申明变量 FillArea 为 RECT 类型 ’对各变量进行初始化设置
2. 界面美化
在遵循以上界面设计原则的基础上 ,再来 谈谈在 VB 中美化界面的几个小技巧 。
2. 1 制作半透明窗体
使用 SetLayeredWindowAttributes 函数 ,可以 轻松的实现半透明窗体 。按照微软的要求 ,透
明窗体窗体在创建时应使用 WS- EX-LAYERED 参数 (用 CreateWindowEx) ,或者在创建后设置 该参数 (用 SetWindowLong) ,我选用后者 。全部 函数 、常量声明如下 :
现不出应有的价值 ,不但对用户的使用带来不 便 ,甚至还会使用户觉得应用程序不可靠 。因 此设计界面时尽量与当前流行的应用程序风 格一致 。当今 Windows 应用程序一般都有标题 栏 、菜单栏 、工具栏和状态栏等 ,设计时如保持 这样的风格能使用户更容易接受 。另外整个 应用程序中各个界面的风格也要保持一致 。
1. 界面设计原则
Hale Waihona Puke 1. 1 简洁界面设计最重要的原则就是简洁与明了 。 对于应用程序而言 ,如果界面看上去很难 ,则 可能程序使用本身也比较复杂 ,而在设计时稍 稍深入考虑一下 ,便有助于创建看上去和用起 来都很简单的界面 。从美学的角度来讲 , 整 洁 、简单明了的设计更有可取性 。
1. 2 一致性
2006 年第 3 期 总第四十九期
常州工程职业技术学院学报
JOURNAL OF CHANGZHOU INSTITUTE OF ENGINEERING TECHNOLOGY
Vol . 3 2006 Sep No. 49
VB 中界面的设计原则及美化
王 侃 ①
常州工程职业技术学院
摘 要 良好的界面设计决定了应用程序的易用性和可操作性 ,设计界面时应遵循简洁 、一 致性 、重点突出 、内容和形式的统一的原则 ;在此基础之上 ,本文介绍了美化界面的几个小技 巧 ,如制作半透明窗体 、制作渐变背景色和界面背景花纹的制作 。 关键词 界面 设计原则 美化
— 56 —
VB 中界面的设计原则及美化
方 ,因为用户通常是要使用按钮来完成窗口的 操作 。将内容相似的控件适当的分组也是非 常重要的 ,按照控件在功能或关系上的联系 , 将它们放在一起 ,在视觉效果上也要比将它们 分散在屏幕的各处要好得多 ,也使得界面层次 分明 ,结构清晰 。
1. 4 内容和形式的统一
一致的外观将体现应用程序的协调性 ,如 果缺乏一致性就会使界面混乱而无序 ,这样的 界面将会使应用程序看起来混乱而不严密 ,体
条重要的信息 ,它的标题栏应当安排放在能被 用户第一眼看到的位置 , 而各种操作按钮如 “确 定 ”、“取 消 ”则 应 当 处 于 该 标 题 栏 的 右 下
① 作者简介 :王侃 ,女 ,讲师 。
Private Declare Function SetLayeredWindow Attributes Lib“user32”(ByVal hwnd As Long , By2 Val crKey As Long , ByVal bAlpha As Byte , ByVal dwFlags As Long) As Long 其中 hwnd 是透明窗体 的句柄 ,crKey 为颜色值 ,bAlpha 是透明度 ,取值 范围是[ 0 ,255 ] ,dwFlags 是透明方式 ,可以取两 个值 : 当取值为 LWA-ALPHA 时 ,crKey 参数无 效 ,bAlpha 参数有效 ;当取值为 LWA COLOR2 KEY时 ,bAlpha 参数有效而窗体中的所有颜色 为 crKey 的地方将变为透明 ———这个功能很有 用 :我们不必再为建立不规则形状的窗体而调 用一大堆区域分析 、创建 、合并函数了 ,只需指 定透明处的颜色值即可 。具体代码如下 :
Private Const WS EX LAYERED = &H80000 Private Const GWL EXSTYLE = ( - 20) Private Const LWA ALPHA = &H2 Private Const LWA COLORKEY = &H1 Private Sub Form Load () Dim rtn As Long rtn = GetWindowLong ( hwnd , GWL EX2 STYL E) rtn = rtn Or WS EX LAYERED SetWindowLong hwnd , GWL EXSTYLE , rtn SetLayeredWindowAttributes hwnd , 0 , 200 , LWA ALPHA End Sub
在开发应用程序中 ,为了使其更具吸引 力 ,有个良好的界面是非常重要的 。界面的设 计和美化不仅影响到它本身外观的可观赏性 , 而且对应用程序的可操作性也有不可忽视的 作用 。一个有着良好界面的应用程序往往会 给用户一个好印象 ,使用户易于接受并积极使 用 。良好的界面并不是只有专业的美术人员 才能设计出来 ,在 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 窗体上建立一个网格控件 ,使网格行 不可见 ,去掉固定行和固定列 。
然后设计一个花纹图案 ,形成 BMP 位图文 件 ,如 Pic1. bmp ,或者从其他图像中截取一段 图案 ,也可以利用 Windows 系统提供的图案 ,将 其调入 Picture 控件 。设定网格的每个单元与 该图案大小相同 ,使单元的数量正好覆盖整个 窗体背景 ,再将所以单元均显示该图案 。通过 子程序 BackPict ( ) 实现以上过程 ,不论图案大 小 、窗体大小 ,程序都能自动调整网格控件大 小和网格单元大小及单元数量 。参考代码如 下:
一致性原则在设计中是最容易被违反 ,同 时也最容易修改和避免的 ,因此在开发应用程 序之前就应建立设计风格 ,事先规定好设计要 素。
1. 3 重点突出
在绝大多数的程序界面设计中 ,并不是所 有的内容都具有一样的重要性 ,所以应抓住重 点 ,将较重要和经常用到的内容放在对用户来 说处在一目了然的 、显要的位置上 ,次要的内 容则应当处于次要的位置 。习惯的阅读顺序 一般是从左到右 ,从上到下 。按照此原则 ,用 户第一眼看到的应是计算机屏幕的左上部分 , 因此最重要的内容应当放在这里 。比如有一
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 运行 ,就会出现一个以从上至下 、由 浅至深的渐变蓝色为背景的窗口 。对上述代 码稍加改动 ,便可制作出各种颜色和水平方向 的渐变背景 。