四、SkinFormProfessionalRenderer类(二)——一起学C#Winform界面开发
时间:2010-08-27 来源:orsca
1、上篇文章说到了作者自定义类GraphicsPathHelper。
这个类被用来创建路径。
创建的路径被用来区域。
Region 类(区域)
public override Region CreateRegion(SkinForm form)
{
Rectangle rect = new Rectangle(Point.Empty, form.Size);
using (GraphicsPath path = GraphicsPathHelper.CreatePath(
rect,
form.Radius,
form.RoundStyle,
false))
{
return new Region(path);
}
}
指示由矩形和由路径构成的图形形状的内部。无法继承此类(msdn)
这个区域被用来给绘图设置剪辑区域。
构造函数:(msdn)
Region(GraphicsPath):用指定的 GraphicsPath 初始化一个新的 Region。
Region(Rectangle):基于指定的 Rectangle 结构初始化一个新的 Region。
Region(RectangleF):基于指定的 RectangleF 结构初始化一个新的 Region。
Region(RegionData):基于指定数据初始化一个新的 Region。
在例子中,作者用路径初始化了一块儿区域。
这个就说到这里。
2、重载InitSkinForm函数。
public override void InitSkinForm(SkinForm form)
{
form.BackColor = ColorTable.Back;
}
给要绘制的窗体设置背景色。
3、重载OnRenderSkinFormCaption(绘制标题栏)
protected override void OnRenderSkinFormCaption(SkinFormCaptionRenderEventArgs e)
{}
SkinFormCaptionRenderEventArgs:该参数在SkinForm类中赋予了值。赋值代码:
renderer.DrawSkinFormCaption(
new SkinFormCaptionRenderEventArgs(
this, g, CaptionRect, _active));
this:表示当前的窗体实例。
g:在代码中是赋予了e.Graphics的引用。
e的类型为:PaintEventArgs
该类包含两个比较重要的属性
(1)Graphics实例。它主要用于优化绘制窗口中需要绘制的部分,而不必调用Form实例的CreateGraphics()方法,在OnPaint方法中获取了设备环境。
(2)ClipRectangle矩形实例。在GDI+中叫做剪切区域。表示需要绘制的部分。
_active:
我们详细的了解下这个方法的内容。
Graphics g = e.Graphics;
//获得设备环境
Rectangle rect = e.ClipRectangle;
//获得剪切区域
SkinForm form = e.SkinForm;
//这个是SkinFormCaptionRenderEventArgs增加的属性,引用要绘制的窗体。
Rectangle iconRect = form.IconRect;
//图片矩形,引用的是绘制窗体的图标矩形
Rectangle textRect = Rectangle.Empty;
//文字矩形
正在添加