• [转载]帮助C#菜鸟进入GDI+开发


    前一阶段看到很多网友提问关于设计一些样式独特的按钮,或者要在一些控件上做出一

    些图标之类的

    东西的问题,往往得到的答复就是一句“用GDI+”那么什么叫做GDI+呢?如何应用GDI+

    呢?今天给大家

    做一个小例子,希望对大家有帮助:


    1 GDI+的定义:GraphicDevice Interface Plus 就是图形装置接口,我们通过这个借

    口可以对控件进行

    一些设计,。


    2 一个小例子:如何用GDI+来修改一个按钮的样式:

    第一步,我们要建立一个类——Button_paint,这个类就是我们以后要用的,我们自己

    设计的按钮。


    第二步,我们需要引用两个组件进来:


    一个是 System.Drawing.dll,这个是GDI+所需要的组件。


    另外一个是 System.Windows.Forms.dll ,我们需要这个组件,来重写里边的按钮对

    象。


    第三步,现在开始进入编写代码,首先要做的是把刚才引用的组件调入我们的程序:


    using System.Drawing;

    using System.Windows.Forms;


    然后我们要在这里类里边继承原始的Button对象,以便于对这个对象进行重写,代码如

    下:


    public class Button_paint:System.Windows.Forms.Button


    然后在这个函数的进入点 public Button_paint()里边加入一个代理,

    就是让这个类被调用的时候,当执行图像生成部分this.Paint的时候自动激活

    我们自己所设计的这个方法button_paint:


    this.Paint+=new System.Windows.Forms.PaintEventHandler(button_paint);


    然后我们写一下button_paint这个方法,把这个绘画的代理传入这个方法,

    后边边开始就是正规的GDI+编程了。


    private void button_paint(object sende,System.Windows.Forms.PaintEventArgs

    e)

    在button_paint 这个方法里边,我们可以给这个按钮加入一些简单的图形修饰,方法

    如下:

    首先我们定义一根画笔,我们需要用它来进行图像的绘画,这根画笔我们用红色吧:


    Pen pen=new Pen(Color.Red);


    然后定义画笔的宽度:


    pen.Width=8;


    好的,我们现在开始画了,操作的对象自然就是我们传递进来的这个需要修饰的对象 e


    让我们先画条直线:


    e.Graphics.DrawLine(pen,7,4,7,this.Height-4);


    这个没有必要多解释了吧?


    然后再划一个椭圆


    e.Graphics.DrawEllipse(pen,this.Width-16,6,8,8);


    然后把这个类编译好,然后引用到我们的应用程序中调用吧,这时候就可以看到我们涉

    及的这个对象的效果了。


    具体的我做的这个例子的代码如下:


    using System;

    using System.Drawing;

    using System.Windows.Forms;


    namespace Button_paint

    {

    public class Button_paint:System.Windows.Forms.Button

    {

    public Button_paint()

    {

    this.Paint+=new System.Windows.Forms.PaintEventHandler(button_paint);

    }

    private void button_paint(object sende,System.Windows.Forms.PaintEventArgs

    e)

    {

    Pen pen=new Pen(Color.Red);

    pen.Width=8;


    e.Graphics.DrawLine(pen,7,4,7,this.Height-4);

    e.Graphics.DrawEllipse(pen,this.Width-16,6,8,8);

    }

    }

    }

     

  • 相关阅读:
    flash/flex builder在IE中stage.stageWidth始终为0的解决办法
    “AS3.0高级动画编程”学习:第一章高级碰撞检测
    Flash/Flex学习笔记(57):实用技巧
    Flash/Flex学习笔记(56):矩阵变换
    flash开发中如何实现界面代码分离
    [转]Flash开发技能树
    flash builder代码格式化以及其它快捷键
    中小型商城系统中的分类/产品属性/扩展属性的数据库设计
    “AS3.0高级动画编程”学习:第四章 寻路(AStar/A星/A*)算法 (下)
    晒晒这两天做的播放器
  • 原文地址:https://www.cnblogs.com/todd/p/1241307.html
Copyright © 2020-2023  润新知