很多Windows 应用程序中的控件可以手工绘制,来达到更加生动的效果,可以使用窗体组件的ownerdraw属性来达到这个目的。Menu就是一个这样的组件,它允许我们手工绘制其界面。 这篇文章的主要目的在于向你解释如何用特定的字体,图片,背景颜色以及其他的图形对象来绘制自己定制的菜单。 第一步:创建一个简单的Windows Form应用程序 在默认的窗体上,添加一个“MainMenu”控件, 创建如下形式的菜单 在这里我们需要手工绘制的菜单不仅仅是顶级菜单,而且包括子菜单 对每个菜单项而言,手工绘制将调用如下两个函数.. DrawItem . 这个函数里将加入实际的绘图逻辑. object sender, System.Windows.Forms.DrawItemEventArgs e) object sender, System.Windows.Forms.MeasureItemEventArgs e) 现在我们需要为子菜单添加DrawItem 和 MeasureItem 事件处理函数. 对所有子菜单,我们创建不同的事件函数 object sender, System.Windows.Forms.MeasureItemEventArgs e) object sender, System.Windows.Forms.DrawItemEventArgs e) 注意:这里我们并不是对每个菜单项都创建一个相应的事件处理函数,尽管你可以这样做。相反的,我们通过一个通用的事件处理函数(mi_TopMenuItem_DrawItem)来处理所有顶级菜单项(File/Options/Help)的DrawItem事件,一个通用的事件处理函数来处理所有顶级菜单项的MeasureItem事件;一个通用的事件处理函数(mi_SubMenuItem_DrawItem)来处理所有的子菜单项(Open/Close…About)的DrawItem事件,一个通用的事件处理函数(mi_SubMenuItem_MeasureItem)来处理所有的子菜单的MeasureItem事件。 下面是顶级菜单的事件处理函数
编译并执行.
About the Author Shripad Kulkarni |
本文地址:http://com.8s8s.com/it/it45320.htm