.NET中的自绘机制
2006-07-18 11:26:21 来源:WEB开发网为了避免编写一个新的可视化设计器并充分利用自动生成的 Visual Studio .NET 代码,我决定另辟蹊径。图标与菜单项之间的联系将被存储在 GraphicMenu 类内部的一个 Hash 表中。用 AddIcon 方法来向 Hash 表添加元素。 extendedMenu.AddIcon(FilePrint, "..\images\print.bmp")
AddIcon方法有两个参数——菜单项对象及欲显示的小位图文件的(或者任何System.Drawing.Image 类支持的其它图像文件格式)路径。在此 Hash 表中,菜单项对象是表的主键,而图标文件名是元素的值。虽然这种解决方案从理论上 讲并不优秀,但却可以让你以传统方式来使用惯用的工具(Visual Studio .NET)。你只需要调用额外的方法、运行一些重新配置菜单的后台代码。
extendedMenu.AddIcon(FileNew, "..\images\new.bmp")
extendedMenu.AddIcon(FileOpen, "..\images\open.bmp")
extendedMenu.AddIcon(FileSave, "..\images\save.bmp")
前示代码假设菜单位图存放于外部文件——有点类似一个Web应用程序。如果你打算使用内嵌在应用程序集中的图像,你可以重载 AddIcon 方法,并使之能接受代替文件路径的一个Image对象作为传入参数: Sub AddIcon(ByVal item As MenuItem, ByVal icon As Image)
这个应用程序将首先从程序集(assembly)中提取图像,然后将其添加到Hash表。
MeasureItem 事件
当菜单项被置为自绘方式后,用户需要激活两个事件来定制菜单的显示。第一个事件对应Win32的WM_MEASUREITEM消息。窗口收到这个消息时,它就会触发一个 MeasureItem 事件给所有的自绘 MenuItem 对象。这个事件代理(Delegate)是一个名为MeasureItemEventHandler 的类, 其原型如下: Sub StdMeasureItem(ByVal sender As Object, ByVal e As MeasureItemEventArgs)
与此事件相关的信息都被存储在一个MeasureItemEventArgs 对象中并被传递到事件处理函数。Figure 5 列出并描述了这个类的所有属性。
- ››Netpas加速 让非电信宽带用户流畅上网
- ››net中fckediter的图片上传时候点击\浏览服务器\出...
- ››Netmsg局域网聊天程序
- ››NetAirus指控苹果iPhone侵犯其专利
- ››Netflix 在线影视播放程序将登陆 iPhone
- ››Net中各种不同的对象创建方式的速度差异
- ››NetNewsWire 功能简单 界面快速 Reader 浏览器
- ››NET-使用Js调用WebService
- ››Net 应用程序如何在32位操作系统下申请超过2G的内...
- ››NET 4.0新特性-- Corrupted State Exceptions
- ››NET应用程序的本地化及RESGEN.exe, AL.exe介绍
- ››NetMeeting在办公网络中的应用
更多精彩
赞助商链接