|
法新建的渐变颜色刷子的实例要销毁,但是前面的声明还是有效的
br = Nothing ''''将整个刷子暂时清空
Dim sf As StringFormat = New StringFormat() sf.HotkeyPrefix = HotkeyPrefix.Show ''''指定与文本相关的热键前缀的显示类型。将其设置为显示 sf.SetTabStops(60, New Single() {0}) ''''第一个参数firstTabOffset表示 ''''文本行开头和第一个制表位之间的空格数。 ''''第二个参数tabStops()表示 ''''制表位之间的距离(以空格数表示)的数组。 If Mi.Enabled Then ''''根据菜单是否可用来决定图像刷子的颜色 br = New SolidBrush(EvDrawItems.ForeColor) Else br = New SolidBrush(Color.Gray) End If ''''在菜单上面写字 EvDrawItems.Graphics.DrawString(GetRealText(Mi),MyFont,br,EvDrawItems.Bounds.Left + 25, EvDrawItems.Bounds.Top + 2, sf) br.Dispose() br = Nothing sf.Dispose() sf = Nothing End Sub
Function GetRealText(ByVal Mi As MenuItem) As String 这个事件是用来获得菜单文本的 Dim s As String = Mi.Text ''''获得菜单原始文本 If Mi.ShowShortcut And Mi.Shortcut <> Shortcut.None Then Dim k As Keys = CType(Mi.Shortcut, Keys) ''''如果有菜单快捷键就让菜单文本加上快捷键文本 s = s & Convert.ToChar(9) & TypeDescriptor.GetConverter(GetType(Keys)).ConvertToString(k) End If Return s End Function 说明:当然您可以让菜单的文本变成任何您想要的文本! End Module
好了,最后一步就要看看我们的实际效果了,在原来的窗体上写上代码吧!! 下面我们以“美化”第一,第二个菜单项为例子,当然,一般主菜单不应该有图标的。看懂了以后,各位按照自己的想象力来画自己的菜单好了。
Private Sub MenuItem1_MeasureItem(ByVal sender As Object, ByVal e As System.Windows.Forms.MeasureItemEventArgs) Handles MenuItem1.MeasureItem 第一个测量事件 ,特别注意“Handles“标志 ! Dim MyFont As New System.Drawing.Font("Arial", 8) ‘定义一个你喜欢的字体 MeasureItems(e, MenuItem1, Myfont) End Sub
Private Sub MenuItem1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles MenuItem1.DrawItem Dim Ic As New Icon("C:\file.ico") ‘定义一个您喜欢的图标 Dim MyFont As New System.Drawing.Font("Arial", 8) ‘这个字体最好和前面保持一致,当然如果您愿意,也可以在前面一种字体的确定范围用新字体写字,但是字体最好不要设置得太过火了,不然可能有意想不到的后果! DrawItems(e, MenuItem2, Ic, Color.Blue, Color.Yellow, Myfont) End Sub
Private Sub MenuItem2_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles MenuItem2.DrawItem e.Graphics.CompositingQuality=Drawing.Drawing2D.CompositingQuality.HighQuality Dim Ic As New Icon("C:\open.ico") Dim MyFont As New System.Drawing.Font("Arial", 14) DrawItems(e, MenuItem2, Ic, Color.Tomato, Color.LavenderBlush, MyFont) End Sub
Private Sub MenuItem2_MeasureItem(ByVal sender As Object, ByVal e As System.Windows.Forms.MeasureItemEventArgs) Handles MenuItem2.MeasureItem Dim MyFont As New System.Drawing.Font("Arial", 14) MeasureItems(e, MenuItem2, MyFont) End Sub 运行一下,你会得到一个主菜单也有图标,各个菜单项的字体和底色都不同的菜单!这只是一个演示,但是最好不要在真正的软件中这样设计,菜单应该保持统一的风格。 这篇文章只是介绍一个修改菜单的基本方法,我希望大家能够举一反三,发挥自己的创造力,制作出自己的个性化菜单来!
上一页 [1] [2] 没有相关教程
|