打印本文 打印本文 关闭窗口 关闭窗口
创意无极限,用VB7制作您的个性化菜单
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2124  更新时间:2009/4/23 18:59:34  文章录入:mintao  责任编辑:mintao
法新建的渐变颜色刷子的实例要销毁,但是前面的声明还是有效的

        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] 

打印本文 打印本文 关闭窗口 关闭窗口