C# GDI基础

处理图形包括两个步骤:
创建Graphics对象。
使用Graphics对象绘制线条和形状、呈现文本或显示与操作图像。

Graphics

封装一个GDI+绘图图面。提供将图形显示到设备的方法,此类不能被继承。

实例化Graphics类的几种方法

  1. Paint事件的PaintEventArgs中Graphics对象的引用
private void Form1_Paint(object sender,
   System.Windows.Forms.PaintEventArgs pe)
{
     // Declares the Graphics object and sets it to the Graphics object
     // supplied in the PaintEventArgs.
     Graphics g = pe.Graphics;
     // Insert code to paint the form here.
}
  1. CreateGraphics方法创建Graphics对象
Graphics g;
// Sets g to a graphics object representing the drawing surface of the
// control or form g is a member of.
g = this.CreateGraphics();
  1. Image创建Graphics对象
Bitmap myBitmap = new Bitmap(@"C:\Documents and
   Settings\Joe\Pics\myPic.bmp");
Graphics g = Graphics.FromImage(myBitmap);

绘制和操作形状与图像

Graphics 对象在创建后,可用于绘制线条和形状、呈现文本或显示与操作图像。 与 Graphics 对象一起使用的主要对象有:

  • Pen 类 – 用于绘制线条、勾勒形状轮廓或呈现其他几何表示形式。
  • Brush 类 – 用于填充图形区域,如实心形状、图像或文本。
  • Font 类 – 提供有关在呈现文本时要使用什么形状的说明。
  • Color 结构 – 表示要显示的不同颜色。

GDI+消除锯齿

graphics = this.CreateGraphics();
//指定抗锯齿的呈现。
graphics.SmoothingMode = SmoothingMode.HighQuality;

SmoothingMode 枚举

  • AntiAlias 指定抗锯齿的呈现。
  • Default 指定不抗锯齿。
  • HighQuality 指定抗锯齿的呈现。
  • HighSpeed 指定不抗锯齿。
  • None 指定不抗锯齿。

DefaultNoneHighSpeed等效,用于指定没有应用平滑处理时的呈现方式。

AntiAliasHighQuality等效,用于指定应用平滑处理时的呈现方式。

直线

绘制一条连接两个Point结构的线。
命名空间: System.Drawing
程序集:System.Drawing(在 System.Drawing.dll中)

public void DrawLine(
    Pen pen,
    Point pt1,
    Point pt2
)

pen
类型: System.Drawing.Pen
Pen,它确定线条的颜色、宽度和样式。

pt1
类型: System.Drawing.Point
Point 结构,它表示要连接的第一个点。

pt2
类型: System.Drawing.Point
Point 结构,它表示要连接的第二个点。

示例:

// Create pen.
Pen blackPen = new Pen(Color.Black, 3);

// Create points that define line.
Point point1 = new Point(100, 100);
Point point2 = new Point(500, 100);

// Draw line to screen.
e.Graphics.DrawLine(blackPen, point1, point2);

测量字符串的高度

使用Graphics.MeasureString方法

参数
text
类型: System.String
要测量的字符串。

font
类型: System.Drawing.Font
Font,它定义字符串的文本格式。

string temp = "ABCD";
Font font = new Font("宋体", 9);
Graphics g = this.CreateGraphics();
SizeF sizeF = g.MeasureString(temp, font);
MessageBox.Show(sizeF.Width + " " + sizeF.Height);
g.Dispose();
posted @ 2020-01-18 09:03  那人_那事  阅读(283)  评论(0编辑  收藏  举报