Vindows程序设计 第12章GDI+图形图像 程序设计
Windows 程序设计 第12章 GDI+图形图像 程序设计
学习要点 ■1.掌握C#的GD+常用绘图功能的实现方法 ■2.掌握C#的GD+文本的字体设置及其呈现的实现 方法 ■3.掌握C#的GD+图像处理的基础知识及动画设计 方法 ■4.了解C#的GD+图像的变形功能的实现方法
2 学习要点 ▪ 1.掌握C#的GDI+常用绘图功能的实现方法 ▪ 2.掌握C#的GDI+文本的字体设置及其呈现的实现 方法 ▪ 3.掌握C#的GDI+图像处理的基础知识及动画设计 方法 ▪ 4.了解C#的GDI+图像的变形功能的实现方法
。基本内容 文本的绘制 图像的绘制 画刷填充图形 C#图像处理概述 图像的输入和保存 彩色图像处理
3 基本内容 文本的绘制 C#图像处理概述 图像的输入和保存 图像的绘制 画刷填充图形 彩色图像处理
文本的绘制 DrawString方法实现,用指定的Brush和Font对象绘制指定的文 本字符串。 ■构造函数 DrawString(String s,Font font,Brushbrush,float x,float y) ·参数s为要绘制的字符串, g this.CreateGraphics(); fontString="黑体,20号,灰色,倾斜"; font=new Font"隶书",20,FontStyle.Italic; brush new SolidBrush(Color.Gray); PointF结构 PointF p new PointF(20,130); 或替换为20,130 g.DrawString(fontString,font,brush,p);
4 文本的绘制 ▪ DrawString方法实现,用指定的Brush和Font对象绘制指定的文 本字符串。 ▪ 构造函数 DrawString( String s, Font font, Brush brush, float x, float y) ▪ 参数s为要绘制的字符串, ▪ font 为字体样式 ▪ brush画刷 ▪ x,y文本左上角的坐标 g = this.CreateGraphics( ); fontString = "黑体,20号,灰色,倾斜"; font = new Font("隶书", 20, FontStyle.Italic); brush = new SolidBrush(Color .Gray); PointF p = new PointF(20, 130); g.DrawString(fontString, font, brush, p); PointF结构 或替换为20,130
图像的绘制 图像的绘制使用Drawlmage方法来实现 方法一:在指定的位置按原始大小绘制指定的Imagel图像。 ■ Drawlmage(Imageimage,Pointpoint) ■方法二:在指定位置并且按指定大小绘制指定的Image图像。 Drawlmage(Imageimage,int x,int y,int width,int height) Graphics g; II创建Graphics对象 ∥创建图像对象 Image mylmage Image.FromFile("ali.jpg"); g this.CreateGraphics(); g.Drawlmage(mylmage,30,30,240,140); 5
5 图像的绘制 ▪ 图像的绘制使用DrawImage方法来实现 ▪ 方法一:在指定的位置按原始大小绘制指定的Image图像。 ▪ DrawImage(Image image, Point point) ▪ 方法二:在指定位置并且按指定大小绘制指定的Image图像。 ▪ DrawImage(Image image, int x, int y, int width, int height) Graphics g; // 创建Graphics对象 // 创建图像对象 Image myImage = Image.FromFile(“ali.jpg”); g = this.CreateGraphics(); g.DrawImage(myImage, 30, 30, 240, 140);
画刷 画刷是从Brush类派生的任何类的实例,可与Graphics.对 象一起使用来创建实心图形或呈现文本对象。还可以使用 画刷填充各种图形,如矩形、椭圆或多边形等。 ■SolidBrush:单色画刷 System.Drawing.Drawing2D; ■HatchBrush:可以从预设图系中匹年 ■ TextureBrush:使用纹理(图像)进行绘制 ■∥1个像素宽的红色画刷 SolidBrush brush1 new SolidBrush (Color.Red); ■∥1个像素宽的红色笔 ■Penpen1=new Pen(brush1)月 ·5个像素宽的红色笔 Pen pen2 new Pen(brush1,5);
7 画刷 ▪ 画刷是从Brush类派生的任何类的实例,可与Graphics对 象一起使用来创建实心图形或呈现文本对象。还可以使用 画刷填充各种图形,如矩形、椭圆或多边形等。 ▪ SolidBrush:单色画刷 ▪ HatchBrush:可以从预设图案中选择 ▪ TextureBrush:使用纹理(图像)进行绘制 ▪ //1个像素宽的红色画刷 ▪ SolidBrush brush1 = new SolidBrush (Color.Red); ▪ //1个像素宽的红色笔 ▪ Pen pen1 = new Pen(brush1); ▪ //5个像素宽的红色笔 ▪ Pen pen2 = new Pen(brush1,5); System.Drawing.Drawing2D;
画刷 利用画刷填充图形 HatchBrush画刷 ■HatchBrush(阴影画刷)类在System.Dra 名空间下,它有两种颜色:前景色和背景色 色定义线条的颜色;背景色定义线条之间间 ■阴影画刷的构造函数如下: HatchBrush(HatchStyle hatchStyle,Color HatchBrush HatchStyle hatchStyie,Color Graphics g e.Graphics; I∥实例化Graphics类 HatchBrush brush1 new HatchBrush(HatchStyle.BackwardDiagonal,Color.Red, Color.Black); Rectangle rec new Rectangle (50,50,200,300); g.FillRectangle(brush1,rec);
8 利用画刷填充图形 ▪ HatchBrush画刷 ▪ HatchBrush(阴影画刷)类在System.Drawing.Drawing2D命 名空间下,它有两种颜色:前景色和背景色,有6种阴影。前景 色定义线条的颜色;背景色定义线条之间间隙的颜色。 ▪ 阴影画刷的构造函数如下: HatchBrush ( HatchStyle hatchStyle, Color forecolor); HatchBrush ( HatchStyle hatchStyle, Color forecolor, Color backcolor ); 枚举值 Graphics g = e.Graphics; // 实例化Graphics类 HatchBrush brush1 = new HatchBrush(HatchStyle.BackwardDiagonal, Color.Red, Color.Black); Rectangle rec = new Rectangle (50, 50, 200, 300); g.FillRectangle(brush1, rec);
利用画刷填充图形 TextureBrush画刷 ■ System.Drawing.Drawing2D命名空间中,它拥有图案, 并且通常使用该图案来填充封闭的图形,其初始化,使 用一个现成的已有图案,并将该图案保存为常用的图像 格式,如BMP格式 TextureBrush(Image bitmap); ■其中,参数bitmap为Image对象2om 使用它来填充其内部。 public TextureBrush(Image imag 9
9 利用画刷填充图形 ▪ TextureBrush画刷 ▪ System.Drawing.Drawing2D命名空间中,它拥有图案, 并且通常使用该图案来填充封闭的图形,其初始化,使 用一个现成的已有图案,并将该图案保存为常用的图像 格式,如BMP格式 TextureBrush(Image bitmap); ▪ 其中,参数bitmap为Image对象,此TextureBrush对象 使用它来填充其内部。 public TextureBrush(Image image, Rectangle dstRect);
GDI+图像处理基础 ■ 1.图像的文件类型 GD+支持多种格式的图像,包括BMP、GF、JPEG、 PNG以及TIFF等,几乎涵盖了所有常用的图像格式。 2.图像类 ■ GDl+提供了Bitmap、Metafile和Image等类用于图像 处理,可以很容易地实现对图像的文件加载、外观或格式 变换以及文件保存等功能。 10
10 GDI+图像处理基础 ▪ 1.图像的文件类型 ▪ GDI+支持多种格式的图像,包括BMP、GIF、JPEG、 PNG以及TIFF等,几乎涵盖了所有常用的图像格式。 ▪ 2.图像类 ▪ GDI+提供了Bitmap、Metafile和Image等类用于图像 处理,可以很容易地实现对图像的文件加载、外观或格式 变换以及文件保存等功能
GDI+图像处理基础 Bitmap类 Bitmap主要用于处理由像素数据定义的图像对象。Bitmap类包 含在System.Drawing命名空间下。 ■ 构造方法 ■方法一:从指定的现有图像建立Bitmap对象。 Bitmap box1 new Bitmap(pictureBox1.Image); ■方法二:从指定的图像文件建立Bitmap对象。 Bitmap box2 new Bitmap("Testlmage.bmp"); ■∥Testlmage.bmp是已存在的图像文件 方法三:用指定的大小初始化Bitmap类的新实例 ■ Bitmap box3 new Bitmap(int width,int height); :验证码 11
11 GDI+图像处理基础 ▪ Bitmap类 ▪ Bitmap主要用于处理由像素数据定义的图像对象。Bitmap类包 含在System.Drawing命名空间下。 ▪ 构造方法 ▪ 方法一:从指定的现有图像建立Bitmap对象。 ▪ Bitmap box1 = new Bitmap(pictureBox1.Image); ▪ 方法二:从指定的图像文件建立Bitmap对象。 ▪ Bitmap box2 = new Bitmap("TestImage.bmp"); ▪ // TestImage.bmp是已存在的图像文件 ▪ 方法三:用指定的大小初始化 Bitmap 类的新实例 ▪ Bitmap box3 = new Bitmap(int width, int height); 例:验证码