zoukankan      html  css  js  c++  java
  • GDI+

    DGI+的功能包含在System、System.Drawing、System.Drawing.Image、System.Drawing.Draw2D和System.Drawing.Text等名称空间的各个类中。

    其中,主要有以下几个类:

    Graphics类:封装了GDI+绘图画板,是GDI+绘图中最核心的类;
    Brush类:用指定颜色、样式、纹理等来填充封闭的图形;
    Pen类:用来画线、多边形、矩形、弧等外围的轮廓部分;
    Font类:用来描绘字体的样式;
    Color类:用来描绘颜色,可以是透明或半透明的;
    位图Bitmap类:用于位图的显示和存储。

    一:Graphics类的基本使用:

      1:创建Graphics对象

          通常有两种方法:(1)通过窗体或控件的Paint事件参数  (2)调用窗体或控件的CreateGraphics方法

      2:使用其相应的画线或画形状的方法,如DrawLine()、DrawRectangle()、FillRectangle()等

    二:Pen类:

    常用构造函数有两个:

    (1)创建一个默认宽度为1的黑笔
              Pen  myPen = new Pen(Color.Black);
    (2)创建一个宽度为6的黑笔
              Pen  myPen = new Pen(Color.Black,6);

    使用示例:

       private void button1_Click(object sender, EventArgs e)
    {
        Pen myPen = new Pen(System.Drawing.Color.Blue);
        Graphics g = this.CreateGraphics();
        g.DrawLine(myPen, 10, 10, 50, 100);
        myPen.Dispose();
        g.Dispose();
    }

    三:画刷Brush类:用来填充

    GDI+提供了以下几种画刷类来填充内部区域 :
    (1)SolidBrush类:单色画刷,在命名空间System.Drawing中定义,其构造函数只有一个,定义如下:
     SolidBrush brush1 = new SolidBrush(Color color);
    可使用属性Color来修改画刷颜色,例如:brush1.Color = Color.Green;
    (2)TextureBrush类:纹理(图像)画刷使用图像填充封闭曲线的内部。
    (3)HatchBrush类:阴影画刷是用指定样式、填充线条颜色和背景颜色的画刷。
    (4)LinearGradientBrush类:颜色渐变画刷。
    使用示例:

    private void buttonFill_Click(object sender, EventArgs e)
      {      SolidBrush mybrush = new SolidBrush(System.Drawing.Color.Blue);
             Graphics g;
             g = this.CreateGraphics();
             Rectangle fillRect = new Rectangle(150, 10, 100, 100);
             g.FillRectangle(mybrush, fillRect);
             mybrush.Dispose();
             g.Dispose();
    }

    ***Pen与Brush的比较:Pen用来画线或轮廓线,Brush用来填充,画实心的形状。同样画一个矩形,Pen应该用在Graphics类的DrawRectangle方法中,画出来的是一个空心矩形;Brush应该用在Graphics类的FillRectangle方法中,画出来的是一个实心矩形。

    四:Font字体类:定义了文字的特定格式,如字体的大小、样式等。常用在显示文字时。

    常用构造具有三个参数,分别代表字体名、字体大小和字体样式。如:

    Font f=new Font("Times New Roman",20,FontStyle.Bold);  //默认单位:pt

    如果想制造一种加粗且变斜的字体可以使用以下两句:

    Font f1=new Font("Times New Roman",20,FontStyle.Bold);

    Font f2=new Font(f1,FontStyle.Italic);

    使用示例:

    public void DrawStringPointFFormat(PaintEventArgs e)
    {

        // Create string to draw.
        String drawString = "Sample Text";

        // Create font and brush.
        Font drawFont = new Font("Arial", 16);
        SolidBrush drawBrush = new SolidBrush(Color.Black);

        // Create point for upper-left corner of drawing.
        PointF drawPoint = new PointF(150.0F, 50.0F);

        // Set format of string.
        StringFormat drawFormat = new StringFormat();
        drawFormat.FormatFlags = StringFormatFlags.DirectionVertical;//文字方向

        // Draw string to screen.
        e.Graphics.DrawString(drawString, drawFont, drawBrush, drawPoint, drawFormat);
    }

    五:Bitmap位图类:

    System.Drawing命名空间中有一个Image类,用来处理图像。但它是一个抽象类,实例化时常使用其三个子类:Bitmap、Metafile(矢量图形)和Icon(图标)。

    显示图像示例:

    private void button13_Click(object sender, EventArgs e)
      {
            Bitmap image1 = new Bitmap("test.jpg");
           //创建Graphics对象,并调用其DrawImage方法画图
                 Graphics g = this.CreateGraphics();
                 g.DrawImage(image1, 10, 150);
             }
      }

  • 相关阅读:
    The 9th SWJTU ACM Final Tutorial
    The 9th SWJTU ACM Online Tutorial
    ACdream群赛(5) D Palindrome
    ACdream群赛(5)总结
    The 9th SWJTU ACM Qualification Tutorial
    IIUC Inter University Programming Contest 2012总结
    曾经流行的,即将流行的几种渲染模式(render pipeline)
    ogre线程及其死锁问题
    crysis shader系统简单分析
    编译并集成mono 2.6.4到应用程序中
  • 原文地址:https://www.cnblogs.com/lgzslf/p/1893477.html
Copyright © 2011-2022 走看看