VB中,如何美化窗体界面。 VB怎样美化窗体界面 !!!!!

VB\u4e2d\uff0c\u5982\u4f55\u7f8e\u5316\u7a97\u4f53\u754c\u9762\u3002

\u65b9\u6cd5\u4e00.
\u81ea\u5df1\u5199\u76ae\u80a4\u63d2\u4ef6\uff0c\u901a\u8fc7API\u4fee\u6539\u7a97\u4f53handle\u53e5\u67c4
\u65b9\u6cd5\u4e8c.
\u81ea\u5df1\u753b\u5de5\u5177\u680f\u548c\u7a97\u4f53\u80cc\u666f\u5168\u90e8\u7528pictrueBox\u6765\u88c5\u8f7d\uff0c\u5343\u4e07\u4e0d\u8981\u7528\u7a97\u4f53\u76f4\u63a5\u53bb\u52a0\u8f7d\u80cc\u666f\uff0c\u4e0d\u7136\u4ed6\u4f1a\u5f88\u5361\u5f88\u95ea\u3002\u7a97\u4f53\u53ef\u4ee5\u4fee\u6539\u6210\u534a\u900f\u660e\uff0c\u7f51\u4e0a\u5b9e\u4f8b\u5927\u628a\u5927\u628a\u7684\u4f60\u53bb\u641c\u7d22\u4e00\u4e0b\u3002\uff08\u7279\u522b\u6ce8\u610f\uff1a\u7a97\u4f53\u62d6\u52a8\u4e5f\u662f\u6709\u6280\u5de7\u7684\uff0cWINDOWS\u7a97\u53e3\u662f\u6709\u4e2a\u62d6\u62fd\u7684API\u51fd\u6570\u7684\uff0c\u5e76\u4e0d\u662f\u4f60\u60f3\u8c61\u7684\u62d6\u7a97\u4f53\u56fe\u7247\u7a97\u4f53\u8ddf\u7740\u52a8\uff0c\u800c\u662f\u62d6\u52a8\u7684\u65f6\u5019\u8c03\u7528API\u5173\u95ed\u80cc\u666f\u91cd\u7ed8\uff0c\u62d6\u653e\u5b8c\u6210\u540e\u518d\u6e32\u67d3\u770b\u5230\u80cc\u666f\u663e\u793a\uff09

\u636e\u8bf4\u754c\u9762\u7f8e\u5316\u662fVB\u7684\u4e0d\u8db3\uff0c\u505a\u7684\u8c61\u4e13\u4e1a\u8f6f\u4ef6\u90a3\u6837\u6f02\u4eae\u662f\u6709\u96be\u5ea6\uff0c\u53ef\u4ee5\u5230\u7f51\u4e0a\u641c\u7d22\u4e00\u4e9b\u522b\u4eba\u7f8e\u5316\u8fc7\u7684\u63a7\u4ef6\uff0c\u62ff\u6765\u7528\uff01

现在越来越多的软件都有了很Cool的2D造型,什么×××× XP啦,×××× 2002之类的,看来争夺软件霸权的地位,2D界面是必不可少的,有很多人认为Visual Basic语言的先天不足导致它不能够很灵活的改变界面,让俺们来看看究竟吧。
如果大家用过《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 Integer
For Count = 0 To 3 ’请将此出的3换成你的LblBtn数量的个数-1
LblBtn(Count).BackColor=LBL_BACK_COLOR ’初始化LblBtn的背景
Next Count
End 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 Sub
Private Sub LblBtn_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) ’鼠标在LblBtn上面移动时触发该事件
Dim Count As Integer
DoEvents ’暂时将系统控制权教给系统
If Button Then Exit Sub ’如果按钮被按下就退出该过程
For Count = 0 To 3
If Count <> Index Then ’如果按下的不是其它按钮
LblBtn(Index).BackColor = LBL_BACK_COLOR ’将背景设为正常
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)
Dim Count As Integer
DoEvents
For Count=0 To 3
LblBtn(Count).BackColor=LBL_BACKCOLOR ’恢复背景
Next Count
End
本来利用Windows的消息系统来完成这一“艰巨”的任务最简单,可问题就来了,Label控件没有窗口句柄怎么办?可是此问题与题无关,写了会有骗稿费之:)
OK,Label控件就讲到这里,在来说说TextBox控件,
各位看关恐怕看惯了白颜色的背景,那么就换换颜色以养养俺们那和绵羊一样的眼睛(为什么说绵羊?俺也不知道),可是VB提供的RGB函数弄出来的颜色不是怎么好看,这里俺来教大家一个小Tip,RGB函数的Red,Green,Blue这三个参数若一样,则产生的颜色是灰度,当然越接近白颜色越好,但也不能让各位看不出来,俺建议TextBox的背景为RGB(235,235,235),各位还是实战一下,将一个TextBox拖到窗体上,属性设置如下
Appearance 0
BorderStyle 1
MutilLine True
千万不要设置ScrollBars属性,否则会影响效果
在Form的Load事件中初始化TextBox
Dim bkColor As Long
Private Sub Form_Load()
bkColor=RGB(235,235,235)
Text1.BackColor=bkColor
End Sub
在Form和Text1的MouseMove事件中:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Text1.BorderStyle = 0
End Sub
Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
DoEvents
Text1.BorderStyle = 1
End Sub
在按下F5试试是不是很Cool?
可能各位看关玩过石器时代,一定会对里面的TextBox的效果感到很爽,VB还不是可以做到,有焦点的控件可以使用SetFocus方法来为其设置焦点,可是一个窗体上如果控件太多了,一个一个的用SetFocus是不是太傻了?这一节的主角就是--------API函数,
首先声明:
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function GetCursorPos Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI) As Long
Private 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" (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 Long
Dim CPos As POINTAPI,Successfull As Boolean,hWnd As Long
DoEvents
Successfull =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)
DoEvents
ReleaseCapture
SendMessage 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 With
End Sub
Sign1的Click事件
Private Sub Sign1_Click()
End ’关闭程序
End Sub
在Form的Resize事件中添加一下代码:
Private Sub Form_Resize()
Sign1.Width = Width
End Sub
如果想让窗体可以改变大小,可以修改一下属性
Caption ""
BorderStyle 2或5
ControlBox False
实际情况如图

不知道各位看关见过爆炸试的窗体没有?,没有见过可以从俺要另外一个俺自己的ActiveX DLL,我的那个东东其实是给我的Software作运行库的,各位若不嫌弃,可以用用,注册后在工程->引用->e-Dogkid Runtime Library
然后在窗体Load事件中输入:
Private Sub Form_Load()
Dim System As e_Dogkid_Runtime_Library.System
Set System = New e_Dogkid_Runtime_Library.System
Show
System.BoomIt hDC, 60, Width, Height, Left, Top
Set System = Nothing
End Sub

方法一. 自己写皮肤插件,通过API修改窗体handle句柄
方法二. 自己画工具栏和窗体背景全部用pictrueBox来装载,千万不要用窗体直接去加载背景,不然他会很卡很闪。窗体可以修改成半透明,网上实例大把大把的你去搜索一下。(特别注意:窗体拖动也是有技巧的,WINDOWS窗口是有个拖拽的API函数的,并不是你想象的拖窗体图片窗体跟着动,而是拖动的时候调用API关闭背景重绘,拖放完成后再渲染看到背景显示)

很难,要不规则窗体,需要调用API,要美化控件,就要DIY控件。要窗口好看,就要自己配色方案并适当的配些图片

  • 濡備綍璁VB璁捐鐨勭▼搴忓瑙傛洿婕備寒 灏辨槸浣跨敤鍥剧墖浣滀负鎿嶄綔鐣岄潰 鎴戦渶瑕佸叿浣撶殑...
    绛旓細浣犲彲浠ョ粰Form娣诲姞涓鍥剧墖 濡傛灉鏄剧ず涓嶅叏鍥剧墖浣犱篃鍙互寰绐椾綋涓婂姞涓涓狿icture鎺т欢 骞朵娇Picture鐨勯暱涓庡涓庣獥浣撳悓绛夊ぇ灏 鐒跺悗鍐嶈缃瓵utosize=True 寰Pictrue涓婂姞鍥剧墖 鍐嶅姞鍏跺畠鎺т欢鍗冲彲
  • VB绋嬪簭璁捐涓湁浠涔堜唬鐮佸彲浠缇庡寲绐椾綋!
    绛旓細鏈绠鍗曠殑锛屼娇鐢⊿kinH_VB6.dll
  • 鍏充簬VB绋嬪簭鐣岄潰鐨缇庡寲
    绛旓細VB6瀹炵幇XP椋庢牸鎺т欢 鍦ㄧ涓涓姞杞界殑绐椾綋涓0鏄庡拰寮曠敤涓嬮潰杩欎釜API杩囩▼ Private Declare Sub InitCommonControls Lib "comctl32.dll" ()Private Sub Form_Initialize()InitCommonControls End Sub 杩欐牱灏卞彲浠ヨ皟鐢╔P椋庢牸浜嗐傛湁涓や釜鏂规硶銆備竴涓槸鐢熸垚绋嬪簭鍚庯紝鍦ㄧ▼搴忕洰褰曚笅鏂板缓涓涓猰anifest鏂囦欢锛屾枃浠舵槸涓涓猉ML鏍煎紡鐨...
  • VB鎬庢牱缇庡寲绐椾綋鐣岄潰 !!!
    绛旓細鎹鐣岄潰缇庡寲鏄VB鐨勪笉瓒筹紝鍋氱殑璞′笓涓氳蒋浠堕偅鏍锋紓浜槸鏈夐毦搴︼紝鍙互鍒扮綉涓婃悳绱竴浜涘埆浜虹編鍖栬繃鐨勬帶浠讹紝鎷挎潵鐢紒
  • VB濡備綍鏀瑰彉绐椾綋鐨勯鑹茶窡褰㈢姸?
    绛旓細瀹綋鐨勫舰鐘跺湪VB涓涓嶈兘鏀圭殑锛屽彧鑳芥洿鏀规ā寮忓拰鑳屾櫙銆傞鑹插拰妯″紡鍙互鐐绐椾綋鍚庡湪鍙充笅瑙掔殑灞炴т腑鎵惧埌銆傚鏋滄兂鏀瑰舰鐘剁殑璇濆緱鍒╃敤绗笁鏂瑰伐鍏蜂簡銆
  • VB绋嬪簭鏍囬鏍忓拰涓绐椾綋鐨勭殑鐣岄潰鎬庝箞淇敼
    绛旓細杩欑鎯呭喌涓鑸槸鏍囬鏍忔枃瀛椾负鍔ㄦ佺敓鎴愮殑鎯呭喌锛屾瘮濡傝鍦‵orm1_Load杩囩▼涓湁涓琛岋細Form1.Caption="Test"杩欑鎯呭喌涓嬫爣棰樻爮鏂囧瓧灏卞彉涓衡淭est鈥濅簡銆備竴鑸儏鍐典笅涓轰簡闃叉鎭舵剰淇敼锛岀獥浣鐨勫睘鎬у嵆渚垮凡閫氳繃灞炴绐楀彛璁剧疆濂斤紝杩樻槸浼氱敤浠g爜璁剧疆涓閬嶇殑銆
  • VB绐椾綋涓浣蹇熸彃鍏ユ爣绛(Label),鑰屼笖姣旇緝鏁撮綈缇庤?
    绛旓細Property AutoSize As Boolean VB.Label 鐨勬垚鍛 鍐冲畾鎺т欢鏄惁鑳借嚜鍔ㄨ皟鏁村ぇ灏忎互鏄剧ず鎵鏈夌殑鍐呭銆侾roperty BackColor As Long VB.Label 鐨勬垚鍛 杩斿洖/璁剧疆瀵硅薄涓枃鏈拰鍥惧舰鐨勮儗鏅壊銆侾roperty BackStyle As Integer VB.Label 鐨勬垚鍛 鎸囧嚭 Label 鎴 Shape 鐨勮儗鏅牱寮忔槸閫忔槑鐨勮繕鏄笉閫忔槑鐨勩侾roperty BorderStyle...
  • 鐢VB.NET璁捐鍚勭褰㈢姸鐨绐椾綋鐣岄潰浜
    绛旓細As System Object ByVal e As System EventArgs ) Handles MenuItem ClickMe LayoutMdi ( MdiLayout Cascade ) 灞傚彔鎺掑垪绐椾綋涓殑鎵鏈塎DI绐椾綋End Sub 鐢ㄤ笅鍒椾唬鐮佹浛鎹orm vb涓鐨凪enuItem 鐨凜lick浜嬩欢瀵瑰簲鐨勫鐞嗕唬鐮 MenuItem 鍗充负鍥 涓殑 姘村钩骞抽摵 鑿滃崟椤 涓嬪垪浠g爜鐨勪綔鐢ㄦ槸姘村钩骞抽摵绐椾綋涓殑鎵鏈塎DI绐椾綋 ...
  • VB绐椾綋鐨勮儗鏅濡備綍闅忕獥浣撶殑鍙樺ぇ鑰屽彉澶у彉灏忚屽彉灏
    绛旓細鏈绠鍗曠殑鏂规硶锛岃屼笖涓嶇敤鍊熷姪鍏朵粬鍥惧儚鎺т欢锛歅rivate Sub Form_Load()Me.AutoRedraw = True End Sub Private Sub Form_Resize()Me.PaintPicture Me.Picture, 0, 0, Me.ScaleWidth, Me.ScaleHeight End Sub
  • vb鐨绐椾綋鑳屾櫙濡備綍璁炬垚鍥剧墖
    绛旓細1锛夊湪绐椾綋娣诲姞涓涓狪mage鍥惧儚妗嗘帶浠躲傚湪瀹冨緱灞炴ч〉璁剧疆Stretch灞炴т负True銆係tretch 灞炴э紝杩斿洖鎴栬缃竴涓硷紝璇ュ肩敤鏉ユ寚瀹氫竴涓浘褰㈡槸鍚﹁璋冩暣澶у皬锛屼互閫傚簲涓 Image 鎺т欢鐨勫ぇ灏忋傚鏋 Stretch 琚缃负 True锛岄偅涔堬紝鎺т欢澶у皬鐨勮皟鏁翠娇寰楀畠鎵鍖呭惈鐨勫浘褰㈢殑澶у皬涔熻璋冩暣銆2锛夊湪浠g爜涓姞鍏ュ涓嬭鍙ワ細Private Sub ...
  • 扩展阅读:vb关闭窗体close方法 ... vb怎么做一个界面 ... vb中窗体起始位置在哪设置 ... vb中调用另一个窗体的代码 ... vb窗体名称和标题怎么设置 ... vba制作窗体登陆界面 ... vb中多个窗体如何运行 ... 怎样一键取消表格美化 ... vb中如何在窗体上显示文字 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网