文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>四、SkinFormProfessionalRenderer类(二)——一起学C#Winform界面开发

四、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() :初始化新的 Region

  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;

    //文字矩形

  

   正在添加

 

 

 

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载