国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

在VB.NET中給菜單加上圖標(biāo)

2024-07-10 13:04:03
字體:
供稿:網(wǎng)友
adding icons to menus in vb.net

'iconsmenumain.vb
'module for adding icons to menus...

imports system
imports system.componentmodel
imports system.drawing
imports system.drawing.drawing2d
imports system.drawing.text
imports system.windows.forms


module iconsmenumain

  dim m_font as new font("arial", 8)

  sub measureitems(byval evmeasureitem as system.windows.forms.measureitemeventargs, _
           byval mi as menuitem)
    dim sf as stringformat = new stringformat()
    sf.hotkeyprefix = hotkeyprefix.show
    sf.settabstops(60, new single() {0})
    evmeasureitem.itemheight = 22
    evmeasureitem.itemwidth = cint(evmeasureitem.graphics.measurestring(getrealtext(mi), _
                               m_font, 10000, sf).width) + 10
    sf.dispose()
    sf = nothing
  end sub

  sub drawitems(byval evdrawitems as system.windows.forms.drawitemeventargs, _
         byval mi as menuitem, byval m_icon as icon)
    dim br as brush
    dim fdisposebrush as boolean
    if not m_icon is nothing then
      if not mi.checked then
        evdrawitems.graphics.drawicon(m_icon, evdrawitems.bounds.left + 2, _
                       evdrawitems.bounds.top + 2)
      else
        evdrawitems.graphics.drawicon(m_icon, evdrawitems.bounds.left + 2, _
                       evdrawitems.bounds.top + 2)
        dim npen as system.drawing.pen
        if not mi.enabled then
          npen = new pen(color.darkgray)
        else
          npen = new pen(color.gray)
        end if
        evdrawitems.graphics.drawrectangle(npen, 1, evdrawitems.bounds.top, 20, 20)
        evdrawitems.graphics.drawrectangle(npen, 3, evdrawitems.bounds.top + 2,
                          16, 16)
      end if
    else
      if mi.checked then
        dim npen as system.drawing.pen
        if not mi.enabled then
          npen = new pen(color.darkgray)
        else
          npen = new pen(color.gray)
        end if
        evdrawitems.graphics.drawrectangle(npen, 1, evdrawitems.bounds.top, 20, 20)
        dim pnts() as point
        redim pnts(2)
        pnts(0) = new point(15, evdrawitems.bounds.top + 6)
        pnts(1) = new point(8, evdrawitems.bounds.top + 13)
        pnts(2) = new point(5, evdrawitems.bounds.top + 10)
        if mi.enabled then
          evdrawitems.graphics.drawlines(new pen(color.black), pnts)
        else
          evdrawitems.graphics.drawlines(new pen(color.gray), pnts)
        end if
      end if
    end if
    dim rcbk as rectangle = evdrawitems.bounds
    rcbk.x += 24

    if cbool(evdrawitems.state and drawitemstate.selected) then
      br = new lineargradientbrush(rcbk, color.midnightblue, color.lightblue, 0)
      fdisposebrush = true
    else
      br = systembrushes.control
    end if

    evdrawitems.graphics.fillrectangle(br, rcbk)
    if fdisposebrush then br.dispose()
    br = nothing

    dim sf as stringformat = new stringformat()
    sf.hotkeyprefix = hotkeyprefix.show
    sf.settabstops(60, new single() {0})
    if mi.enabled then
      br = new solidbrush(evdrawitems.forecolor)
    else
      br = new solidbrush(color.gray)
    end if

    evdrawitems.graphics.drawstring(getrealtext(mi), m_font, 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


'**************
'in the items of menu which you want add icon modify the property ownerdraw to true
'for use this code only add the next references in the form...

  private sub menuitem3_drawitem(byval sender as object, _
                  byval e as system.windows.forms.drawitemeventargs) _
      handles menuitem3.drawitem

    dim ic as new icon("c:/documents and settings/yo/escritorio/iconmenu/save.ico")
    drawitems(e, menuitem3, nothing)
  end sub

  private sub menuitem3_measureitem(byval sender as object, _
                   byval e as system.windows.forms.measureitemeventargs) _
      handles menuitem3.measureitem

    measureitems(e, menuitem3)
  end sub


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 五指山市| 仁怀市| 长寿区| 怀安县| 当涂县| 云浮市| 安吉县| 磐安县| 中山市| 女性| 米泉市| 湘乡市| 吉安县| 资阳市| 会宁县| 逊克县| 万年县| 公主岭市| 怀来县| 吴旗县| 桑植县| 井冈山市| 安远县| 扎兰屯市| 固安县| 沅江市| 大化| 买车| 长宁区| 饶平县| 武鸣县| 大足县| 石棉县| 宜阳县| 龙州县| 长治市| 宁阳县| 雷波县| 东城区| 高邮市| 修武县|