关于vB.Net异形按钮的信息
vb.net中 如何改变button控件的形状
vb.net中控件都是矩形的,如果一定要看起来是其他形状的,只能用背景图片,一般要三个背景图片,正常时候、鼠标移上时候、按下时候的。分别在按钮的四个事件:MouseHover MouseLeave MouseDown MouseUp的时候更换成相应的背景图片
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了舞阳免费建站欢迎大家使用!
vb.net 如何制作图标按钮 ?急急急!!在线等!
窗口边框(FormBorderStyle)设为None,窗口(WindowState)设为Maximized,如果想让窗口背景透明,将窗口背景颜色和TransparencyKey设为同一种颜色,按钮用Label(标签)代替,背景设为Transparent,边框设为None,文字位置一般是下中,Label控件支持无边框。
动感效果在鼠标事件(MouseDown按下,MouseUp抬起,MouseEnter进入,MouseLeave离开)更换指定的图片;
添加timer控件还可以使用动画
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Me.Label1.Refresh()
End Sub
快捷键用热键
RegisterHotKey
函数功能:该函数定义一个系统范围的热键。
函数原型:BOOL RegisterHotKey(HWND hWnd,intid,UINT fsModifiers,UINT vk);
参数:
hWnd:接收热键产生WM_HOTKEY消息的窗口句柄。若该参数NULL,传递给调用线程的WM_HOTKEY消息必须在消息循环中中进行处理。
id:定义热键的标识符。调用线程中的其他热键不能使用同样的标识符。应用功能程序必须定义一个0X0000-0xBFFF范围的值。一个共享的动态链接库(DLL)必须定义一个0xC000-0xFFFF范围的值伯GlobalAddAtom函数返回该范围)。为了避免与其他动态链接库定义的热键冲突,一个DLL必须使用GlobalAddAtom函数获得热键的标识符。
fsModifoers:定义为了产生WM_HOTKEY消息而必须与由nVirtKey参数定义的键一起按下的键。该参数可以是如下值的组合:
MOD_ALT:按下的可以是任一Alt键。MOD_CONTROL:按下的可以是任一Ctrl键。
MOD_SHIFT:按下的可以是任一Shift键。
MOD_WIN:按下的可以是任一Windows按键。
vk:定义热键的虚拟键码。
返回值:若函数调用成功,返回一个非O值。若函数调用失败,则返回值为0。若要获得更多的错误信息,可以调用GetLastError函数。
备注:当某键被接下时,系统在所有的热键中寻找匹配者。一旦找到一个匹配的热键,系统将把WM_HOTKEY消息传递给登记了该热键的线程的消息队列。该消息被传送到队列头部,因此它将在下一轮消息循环中被移去。该函数不能将热键同其他线程创建的窗口关联起来。
若为一热键定义的击键己被其他热键所定义,则RegisterHotKey函数调用失败。
若hWnd参数标识的窗口已用与id参数定义的相同的标识符登记了一个热键,则参数fsModifiers和vk的新值将替代这些参数先前定义的值。
若设置MOD_KEYUP位,则当发生键被按下或被弹起的事件时,窗口将发送WM_HOTKEY消息。
RegisterHotKey可以被用来在线程之间登记热键。
UnregisterHotKey
函数功能:该函数释放调用线程先前登记的热键。
函数原型:BOOL UnregisterHotKey(HWND hWnd,int id);
参数:
hWnd:与被释放的热键相关的窗口句柄。若热键不与窗口相关,则该参数为NULL。
id:定义被释放的热键的标识符。
返回值:若函数调用成功,返回值不为0。若函数调用失败,返回值为0。若要获得更多的错误信息,可以调用GetLastError函数。
1、首先定义所需要用到的常量
如图所示,在窗体代码后定义常量和API函数
代码如下:
Public Const WM_HOTKEY As Integer = H312
Public Const MOD_ALT As Integer = H1
Public Const MOD_CONTROL As Integer = H2
Public Const MOD_SHIFT As Integer = H4
Public Const GWL_WNDPROC As Integer = (-4)
Public Declare Auto Function RegisterHotKey Lib "user32.dll" Alias "RegisterHotKey" (ByVal hwnd As IntPtr, ByVal id As Integer, ByVal fsModifiers As Integer, ByVal vk As Integer) As Boolean
Public Declare Auto Function UnRegisterHotKey Lib "user32.dll" Alias "UnregisterHotKey" (ByVal hwnd As IntPtr, ByVal id As Integer) As Boolean
下面过程是注册Ctrl+T的组合键为组合键,假如注册成功,则返回true,反之注册失败则返回false,我们可以根据返回的结果判断并提醒用户注册的情况。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim isResult As Boolean
isResult=RegisterHotKey(Handle, 0, MOD_CONTROL, Asc("T")) ’注册Ctrl+T的组合键
If isResult = False Then
MsgBox("注册热键Ctrl+T失败")
End If
End Sub
[apge]
下面过程为重载WndProc过程,响应热键并处理热键,这里是用来隐藏和显示程序主界面。
Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = WM_HOTKEY Then
System.Diagnostics.Process.Start("C:\WINDOWS\system32\freecell.exe")'运行当空接龙游戏
End If
MyBase.WndProc(m)
End Sub
最后在关闭窗体的时候释放占用的热键,如果前面注册失败的话,则会出现释放失败的结果。
Private Sub Form1_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
Dim isResult As Boolean
isResult=UnRegisterHotKey(Handle, 0)
End Sub
双击打开指定的程序
Private Sub Label1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Label1.DoubleClick
System.Diagnostics.Process.Start("C:\WINDOWS\system32\freecell.exe")
End Sub
System.Diagnostics.Process.Start("路径")打开指定程序
先列出这些吧
如何自定义VB的按钮形状、窗口形状
使用SetWindowRgn函数可以设置窗体形状,定义如下:
Declare Function SetWindowRgn Lib "user32" Alias "SetWindowRgn" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
hWnd既可以是窗体的句柄,又可以是按钮的句柄
hRgn是要用下述几个函数设置的
bRedraw设置为True就行了
在设置之前首先要设置区域句柄(0为整个窗体):
CreateRectRgn、CreateEllipticRgn、CreatePolygonRgn等可以创建各种形状
然后用CombineRgn函数合并形状
例如(真对不起,我遇到麻烦了):
Option Explicit
Private Type POINTAPI
x As Long
y As Long
End Type
Dim XY() As POINTAPI
'创建一个由一系列点围成的区域。windows在需要时自动将最后点与第一点相连以封闭多边形
Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
'创建一个由点X1,Y1和X2,Y2描述的矩形区域
Private 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坐标点确定的矩形内切
Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
'API函数中的一个。本函数允许您改变窗口的区域。 _
通常所有窗口都是矩形的——窗口一旦存在就含有一个矩形区域。本函数允许您放弃该区域。这意味着您可以创建圆的、星形的窗口,也可以将它分为两个或许多部分——实际上可以是任何形状。为区域指定的所有坐标都以窗口坐标(不是客户坐标)表示,它们以整个窗口(包括标题栏和边框)的左上角为起点
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
'将两个区域组合为一个新区域
Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
'nCombineMode 的可能值
Private Const RGN_AND As Long = 1
Private Const RGN_COPY As Long = 5
Private Const RGN_DIFF As Long = 4
Private Const RGN_OR As Long = 2
Private Const RGN_XOR As Long = 3
Private Sub Form_Load()
Dim hRgn As Long, h1 As Long, h2 As Long
Dim lRes As Long
ReDim XY(7) As POINTAPI 'T shape has 8 points
Me.ScaleMode = vbPixels
With Me
XY(0).x = 0
XY(0).y = 0
XY(1).x = .ScaleWidth
XY(1).y = 0
XY(2).x = .ScaleWidth
XY(2).y = .ScaleHeight / 2
XY(3).x = .ScaleWidth - (.ScaleWidth / 3)
XY(3).y = .ScaleHeight / 2
XY(4).x = .ScaleWidth - (.ScaleWidth / 3)
XY(4).y = .ScaleHeight
XY(5).x = .ScaleWidth / 3
XY(5).y = .ScaleHeight
XY(6).x = .ScaleWidth / 3
XY(6).y = .ScaleHeight / 2
XY(7).x = 0
XY(7).y = .ScaleHeight / 2
End With
h1 = CreatePolygonRgn(XY(0), 8, 2)
h2 = CreateRectRgn(XY(5).x, 0, XY(3).x, 50)
' 这个语句我调试半天不知为什么不成功
' 这个要靠你自己研究了……
'Call CombineRgn(hRgn, h1, h2, RGN_OR)
lRes = SetWindowRgn(Me.hWnd, h1, True)
End Sub
Private Sub Form_Click()
Unload Me
End Sub
VB中.怎么设置按钮的自定义形状哦
我给你几种我的做法吧
其实vb本身的按钮就可以设置为图片的 这样你就可以在上面添加些图片 能起到一定的美化作用
具体做法这样 添加一个按钮控件到窗体上 然后选择按钮的style属性设置为1 然后到downpicture就可以添加图片了
还有种方法就是如果你希望你的按钮在按下时候能动 哪就直接添加个Image控件就型了 按钮触发的代码就写在Image的click事件里就可以替代按钮了 再添加2个Picture控件 然后在Image的MouseMove或者MouseMove里写上装载Picture里的图片 这样就可以在你移动鼠标时图片就动了 当然你还得编写当鼠标离开它的时把图片重新装载回来 否则就停哪不动了
只要你自己肯动脑子 其实都很简单的 不一定非得用那个按钮控件的啊 实在不行可以找些现成的按钮控件也可以
标题名称:关于vB.Net异形按钮的信息
当前链接:http://scyanting.com/article/dsecpsj.html