研究GDI+与控件开发有一段时间了,一直被菜单的重绘问题所困扰,直到最近才找到了最有效的途径来绘制菜单控件!
Menu类控件提供了一个Renderer属性,它为ToolStripRenderer类型属性,此类提供了绘制菜单外观的基本函数(包括绘制菜单背景,Item项背景,分割线,边框,Item文字等函数),通过这些函数足够我们加以利用绘制色彩丰富、风格独特的菜单.
下面仅以ContextMenuStrip为例,介绍下如何打造漂亮的ContextMenuStrip控件.
我们知道C#OOP语言的三大特性:封装、继承、多态;我们通过重写ToolStripRenderer基类的绘制函数即可绘制属于自己风格的ContextMenuStrip控件!
ToolStripRenderer源码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
namespace ControlEx
{