第8章-图形图像处理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
定义枚举值
enum DrawMode { Sin, None };
两个button的Click事件 更改DrawMode类型变量的 状态; 对panel进行refresh,重新 绘制图形;
panel的Paint事件 先判断DrawMode类型变量 的值; 再清除或绘制在panel中的 图形;
8.2.3 矩形
注意:控件的paint事件中 若采用参数e获取Graphics对象,则绘制的图形图像仅在该控件 内显示。
在各种绘制命令中,坐标原点都是相对的。 例如:在控件的Paint事件中绘制,控件的左上角为(0,0)点; 在窗体的Paint事件中绘制,(0,0)点在窗体的左上角。
8.2 绘制基本图形
8.2.1 创建画笔 8.2.2 绘制直线 8.2.3 绘制矩形 8.2.4 绘制多边形
Rectangle的实例创建方式
1. 在构造函数中,分别指定x坐标、y坐标、宽度和高度; 例如:Rectangle r1 = new Rectangle (1 , 2 , 5 , 6); 矩形的左上角坐标(1 , 2) ,宽度为5,高度为6;
2. 在构造函数中,指定Point位置和Size结构; 例如: Point p = new Point (1,2); Size s = new Size (5,6); Rectangle r2 = new Rectangle (p, s); 此例中设置的矩形同上;
从画刷对象创建画笔对象 SolidBrush myBrush = new SolidBrush(Color.Red);
形式1:Pen myPen = new Pen(myBrush); 形式2: Pen myPen = new Pen(myBrush, 5); 画笔常用的属性——Width属性(画笔的宽度)
① 在窗体或控件的Paint事件中获取Graphics对象;
private void Form1_Paint(……) { Graphics g = e.Graphics; }
② 从继承自图像的任何对象创建Graphics对象;
Bitmap myBitmap = new Bitmap(@"C:\mytest1\Pics\myPic.bmp"); Graphics g = Graphics.FromImage(myBitmap);
4、坐标系
默认情况下,坐标系的原点在绘图设备的左上角,x轴正方向 水平向右,y轴正方向水平垂直向下。
默认绘图单位为像素,也可以指定其他绘图单位。
8.1.2 Graphics类
绘制图形图像步骤
先必须创建Graphics对象;
再利用这个对象绘制直线、曲线、椭圆等图形图像;
创建Graphics对象的三种方法
② 通过矩形的左上角坐标(x,y)和宽、高
public void DrawRectangle (Pen pen, int x, int y, int width, int height);
System.Drawing.Drawing2D名称空间 提供高级的二维和矢量图形处理功能; 主要有:梯度型画刷、Matrix类(用于定义几何变换)和 GraphicsPath类等;
System.Drawing.Imaging名称空间 提供高级图像处理功能;
System.Drawing.Text名称空间 提供高级字体和文本排版功能 ;
自定义画笔线帽使用方法
自定义画笔线帽的步骤 ① 创建一个AdjustableArrowCap类的实例,指定箭头的大小,
以及是否填充; ② 设置画笔实例的CustomStartCap属性或者CustomEndCap属
性; ③ 使用该画笔绘制图形即可看到线帽形状; 举例
AdjustableArrowCap arrow = new AdjustableArrowCap(5, 5, true); Pen pen1 = new Pen(Color.Red, 5); pen1.CustomEndCap = arrow; g.DrawLine(pen1, points[0],points[1]);
举例: Graphics g = e.Graphics;
g.TranslateTransform(this.Width / 2, this.Height / 2); Pen pen = new Pen(Color.Red, 5); g.DrawLine(pen, 10, 10, 50, 50);
P173【例8-1】 用毫米作为度量单位,绘制一条数学上使用的坐标轴, 即让坐标系的原点位于窗体中心,横向从左到右为x 正方向,纵向从下到上为y轴正方向,然后在此坐标 系统下绘制一条从(0,0)点到(20,20)的直线。
绘制矩形的方法DrawRectangle ① 根据指定的矩形结构 public void DrawRectangle (Pen pen, Rectangle rect);
Rectangle rectangle = new Rectangle(50, 50, 100, 200); g.DrawRectangle(pen,rectangle);
所有绘制图形的 方法Draw都位于
System.Drawing. Graphics类中
8.2.5 绘制曲线
8.2.6 绘制椭圆和扇形
8.2.1 创建画笔
画笔:Pen类的实例,用于绘制各种基本图形; 画笔的创建
利用构造函数创建 形式1:Pen myPen = new Pen(Color.Blue); 形式2:Pen myPen = new Pen(Color.Blue, 10.5f);
AdjustableArrowCap类 在System.Drawing.Drawing2D命名空间下; 利用该类可以自定义箭头线帽的形状; 语法:
public AdjustableArrowCap(float width, float height, bool isFilled);
指定箭头线帽的宽度、高度、是否填充;
2. 系统预定义颜色 System.Drawing.Color结构中预定义了141种颜色,可直接使用。 例如: this.BackColor = Color.White;
8.1.4 Paint事件
任何一个控件(包括窗体),系统都提供了对应的Paint事件; Paint事件的触发时机:窗体加载、刷新、窗体大小改变、……;
② 绘制一条由坐标对指定的两个点的线。 public void DrawLine (Pen pen,int x1,int y1,int x2,int y2)
x1,y1为起点坐标,x2,y2为终点坐标;
DrawLines方法: public void DrawLines (Pen pen, Point[ ] points)
折线图绘制
8.1 图形图像绘制基础知识
8.1.1 GDI+概述 8.1.2 Graphics类 8.1.3 颜色 8.1.4 Paint事件
8.1.1 GDI+概述
1、GDI+简介 2、.NET框架提供的类 3、基本结构 4、坐标系
1、GDI+简介
GDI+
——Graphics Device Interface (图形设备接口)
③ 通过当前窗体的CreateG百度文库aphics方法,把当前窗体的画笔、
字体、颜色作为默认值,获取对Graphics对象的引用;
Graphics g = this.CreateGraphics();
课堂例题
8.1.3 颜色
颜色封装在System.Drawing.Color结构中; 任何一种颜色都可以有四个分量:
points数组每个点依次相连,绘制折线或图形;
2、定义画笔线帽
LineCap枚举类型 包含.NET框架中,系统预定义的线帽; 例如,圆形、方形、三角形、菱形、箭头等; 使用举例:Pen pen1 = new Pen(Color.Red, 5);
pen1.EndCap = LineCap.ArrowAnchor; g.DrawLine(pen1, points[0],points[1]);
提供了高级图形图像处理功能;
GDI+的托管类
在C#中用于展现提供的图形图像处理功能的托管类;
可以轻松实现颜色渐变、透明处理、纹理处理、拉伸和缩放 等多种高级功能;
GDI+主要提供了三类服务:
① 二维矢量图形处理
② 二维图像处理
③ 文字显示
2、.NET框架提供的类
System.Drawing名称空间 提供对GDI+基本图形功能的访问; 主要有Graphics类、Bitmap类、从Brush类继承的类、Font类、 Icon类、Image类、Pen类、Color类等;
R:红色,取值范围0~255; 0表示没有红色成分,255为饱和红色;
G:绿色,取值范围0~255; 0表示没有绿色成分,255为饱和绿色;
B:蓝色,取值范围0~255; 0表示没有蓝色成分,255为饱和蓝色;
A:Alpha值,即透明度,取值范围0~255; 0表示完全透明,255表示完全不透明。
Coordinate(数学坐标) 类的定义;
Form1的Form1_Paint事 件中 先调用Coordinate类的 GetCoordinate静态方 法,绘制坐标系; 再使用红色的画笔,在 坐标系中绘制直线;
P175【例8-2】 利用DrawLines方法和将根据正弦函数计算出来的多 个点之间用直线依次相连,构成正弦曲线显示出来。
8.2.2 绘制直线
1、绘制直线的方法 2、定义画笔线帽 3、自定义坐标系
1、绘制直线的方法
DrawLine方法:绘制一条直线; ① 绘制一条连接指定两个Point结构的线。 public void DrawLine (Pen pen,Point pt1, Point pt2)
Pen对象确定线条的颜色、宽度和样式; Point结构确定起点和终点;
第8章 图形图像处理
8.1 图形图像基础知识 8.2 绘制基本图形 8.3 填充图形 8.4 图像处理 8.5 图形与图像的平移、旋转与缩放 8.6 文字处理
本章综合举例1——柱状图绘制 (E01DrawShape ——FormRectangle)
本章综合举例2——饼状图绘制 (E01DrawShape ——FormDrawArc)
3、自定义坐标系
默认情况下的坐标系 屏幕坐标是以屏幕左上角为(0,0)点; 向右为x轴正方向,向下为y轴正方向;
坐标平移 Graphics类提供的TranslateTransform方法可实现坐标平移; 语法:public void TranslateTransform (float dx,float dy) dx表示平移的x分量,dy表示平移的y分量;
本章综合举例3——生成校验码 ( E01DrawShape ——FormValidateCode)
本章综合举例4——鼠标绘制图形 (E02-EllipseObjectExample——Form1)
本章综合举例5——鼠标绘制图形 (E02-EllipseObjectExample——FormPicture)
代码中声明颜色的方式
1. 调用静态方法Color.FromArgb()指定任意颜色; 第一种形式为直接指定三种颜色,方法原型为: Public static Color FromArgb (int red,int green,int blue); 三个参数分别表示R、G、B三色,Alpha值使用默认值255; 例如: Color red = Color.FromArgb(255, 0, 0); 第二种形式为四个参数,方法原型为: Public static Color FromArgb (int alpha,int red,int green, int blue); 四个参数分别表示透明度、R、G、B三色值。
3、GDI+中的基本结构
Point 表示某个特定位置相对于原点的水平和垂直距离; 例如: Point p = new Point (1,1);
Size 表示实体的大小,两个参数:宽度(Width)和高度(Height); 例如:Size s = new Size (5,5);
Rectangle 表示一个矩形,它由一个Point和一个Size组成,其中Point表 示矩形左上角,Size表示矩形大小;
相关文档
最新文档