电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

C#程序设计实用教程第09章

36页
  • 卖家[上传人]:梦**
  • 文档编号:59439800
  • 上传时间:2018-11-07
  • 文档格式:PPT
  • 文档大小:243.50KB
  • / 36 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、第9章 GDI+,9.1 GDI+概述 GDI+是GDI(Graphics Device Interface,图形设备接口)的增强版本,它为Windows应用程序开发者提供了一组用于图形图像编程的类、结构和枚举。,9.2 C#的图形绘制结构和类 9.2.1 常用绘图结构 (1)Point与PointF结构 C#中定义的Point与PointF用来表示绘图平面上的一个点,与数学中平面上的点的含义相同,每个点有水平方向的x坐标及垂直方向的y坐标表示,其定义形式如下: (2)Size与SizeF结构 Size与SizeF结构使用Width及Height属性表示屏幕上的一个矩形区域的大小,例如: Size s1=new Size(400,300);/表示宽400,高300的矩形区域; (3)Rectangle与RectangleF结构 Rectangle与RectangleF结构定义一个矩形区域,它有两种实例化方式: Rectangle(Point p,Size s); Rectangle(x,y,width,height);,命名空间,使用C#进行图形编程,是通过使用GDI+ 提供的一组类、

      2、结构和枚举进行的。 使用GDI+常用的命名空间: System.Drawing System.Drawing.Drawing2D 提供高级的二维和矢量图形功能,4,GDI+提供的4种服务:,.NET Framework类库支持开发者完全地访问Windows GDI+。GDI+提供的服务大致可分为以下4种: GDI+提供了绘制简单图形和复杂图形的类。 GDI+允许开发者绘制各种字体的文本 GDI+允许开发者绘制位图和其他类型的图像。 GDI+提供图形变换功能,9.2.2 Graphics类,Syetem.Drawing命名空间中的Graphics类是绘图操作的核心,它封装了GDI+绘图界面,有3种基本类型的绘图界面,分别是: Windows和屏幕上的控件 要发送给打印机的页面 内存中的位图和图像,5,Grahpics类中常用的成员: DpiX/DpiY 返回图形设备水平/垂直分辨率 DrawArc DrawEllipse DrawImage DrawLine DrawPie,6,DrawPloygon DrawRectangle DrawString FillPie/FillPloygo

      3、n/FillRectangle RotateTransform/ScaleTransform,要使用Graphics类执行绘图操作,首先要获得Graphics实例或创建Graphics实例. 3种方法: 1.通过windows窗体或控件的Paint事件来获的Graphics对象实例. Protected override void OnPaint(PaintEventArgs e) Graphics g=e. Graphics; ,2.使用Form类的CreateGraphics方法. Graphics g=this. CreateGraphics(); 注:该实例只在当前Windows窗体消息的过程有效.既在已经存在的窗体或控件中绘图,可用此种方法. 3.从继承自图像的任何对象创建Graphics对象. Bitmap images=new Bitmap(“1.bmp”); Graphics g= Graphics.FromImage(images);,9.2.3 Pen类。 在.NET框架中绘制图形要用到画笔,画笔用Pen类表示,在命名空间Syetem.Drawing中定义,用于绘制

      4、各种直线和曲线,在GDI+中,Pen类封装了画笔的功能。画笔具有颜色和线宽等基本属性。 Pen redPen = new Pen(Color.Red, 1); Pen bluePen = new Pen(Color.Blue, 2); Pen greenPen = new Pen(Color.Green, 3); Pen blackPen = new Pen(Color.Black, 4); 上述代码中定义了四个画笔实例,其中第一个参数为画笔颜色,第二个参数表示画笔的线宽。所以定义的是红、蓝绿、黑四种颜色,线宽为1、2、3、4的四种画笔。,9.2.4 Brush类及Brush的派生类 在.NET框架中绘制图形要用到画刷,画刷用Brush类表示,画刷是一种用来填充区域的工具。在GDI+中,Brush是抽象基类,封装了画刷的基本功能,不能直接用它来创建画刷对象实例,而其功能在其派生类中实现。 Brush类有以下几种派生类,对应定义了几种画刷: SolidBrush(单色画刷)类 TextureBrush(纹理画刷)类 HatchBrush(阴影画刷)类 LinearGradientBrus

      5、h(线性渐变)类 PathGradientBrush(渐变色效果) 实例化画刷类,如: SolidBrush mySolidBrush=new SolidBrush(Color.Blsck);,9.2.5 Color类 颜色可以增强程序的表现力并有助于传递信息。在.NET框架中,使用值类型来表示一个RGB颜色(分别对应于Alpha值和红、绿、蓝三色)。在该类中提供了多种预定义的颜色,它们使用静态属性来表示。所以可以直接通过类名Color来引用,例如Color.Red表示红色。表9-1为常用的Color预定义颜色。,9.2.6 Font 类 窗体或控件对象中包含一个Font属性,表示窗体或控件的当前字体。创建窗体或控件时,这个属性会被系统赋予一个默认值。可以直接使用这个默认字体,也可以创建新的字体。 在GDI+中,字体使用Drawing.Font类来表示。通过创建这个类的一个新的实例可以创建新的字体。创建字体时,需要指定字体的名称、大小、和风格。如果未指定风格,则创建常规字体。在.NET框架中,字体风格使用FontStyle枚举类型表示。,9.3绘制图形 (1)绘制直线(DrawLine

      6、方法) 使用Graphics中定义的DrawLine方法绘制直线,在由坐标对指定的两个点之间绘制一条直线。 (2)绘制矩形(DrawRectangle、DrawRectangles) 只需要指定矩形的起始点、高和宽即可,当然,不要忘记选择笔型。用DrawRectangels可以画出一组矩形来 (3)绘制圆和椭圆(DrawEllipse) (4)绘制文本(DrawString) 利用DrawString方法可以在图形表面上绘制一个文本字符串,可以指定文本内容、字体、画笔和文本的起始点等 (5)绘制圆弧(DrawArc) 其实这里能够绘制的不仅仅是圆弧,也可以是椭圆的一段弧。,Graphics类的画笔(Pen)用于绘制图形的外边界,而画刷(Brush)用于填充图形的内部。Graphics可用的填充方法很有限,我们只能填充特定的图形。 (1)FillEllipse方法 填充一个椭圆的内部。用法和DrawEllipse类似,只是注意Pen要改成Brush。 例:g.FillEllipse(blueBrush, 40.0f, 40.0f, 130.0f, 130.0f ); (3)FillPat

      7、h方法 填充图形路径的内部。同前面DrawPath一样,也是需要先建立GraphicsPath类,将路径add进去,随后再调用FillPath填充。 (4 )FillPie方法 填充扇形区域。Arc本来就只有一条曲线,也就不存在填充了。 例:g.FillPie(new SolidBrush(Color.Red), 0.0f, 0.0f, 100, 60, 0.0f, 90.0f);,9.4 填充填充图形及Clear方法,(5)FillPolygon方法 填充多边形。此方法使用的参数有三个:画笔、点数组和填充模式。 例:g.FillPolygon(greenBrush, ptsArray); (6)FillRectangle方法 填充矩形区域。 例:g.FillRectangle(new HatchBrush(HatchStyle.BackwardDiagonal, Color.Yellow, Color.Black), rect); (7)FillRegion方法 使用画笔填充指定的区域。 (8)Clear方法 清除整个绘图表面,并使用指定的背景色填充绘图表面,参数是一个Color类型

      8、的变量。清除窗体: g.Clear(this.BackColor); 传递该窗体的背景色;,9.5位图处理 在.NET框架中,使用Image类封装了基本的图像操作。该类是一个抽象基类,不能直接用其来创建对象实例。它有两个子类,分别是Bitmap和Metafile。 Bitmap类封装了GDI+位图(.bmp文件格式),可以使用这个类来操作位图。创建位图实例时,可以指定位图文件的路径。这样,新创建的对象就会自动装载入位图,然后即可调用Graphics类的DrawImage方法显示位图。代码如下所示: Bitmap bmp=new Bitmap(“aa.jpeg”); This.CreateGraphics().DrawImage(bmp,new Point(50,50); 可以在显示图像时执行缩放操作,例如将位图缩放到指定的大小,其实现代码如下: Bitmap bmp=new Bitmap(“aa.jpeg”); /在原点的位置上显示10*10大小的位图 This.CreateGraphics().DrawImage(bmp,0,0,50,50);,9.6坐标变换 在标是用来指明绘制图形

      9、对象的位置、大小、比例等特性的,在CDI+中,使用三个坐标空间:全局坐标、页面坐标和设备坐标。 全局坐标 程序代码使用的坐标。他是是一个相对坐标,没有单位。需要转化成绝对坐标,即定义单位后才能确定具体位置、长度等,如绘制长度为4的线段,对于相对坐标,则无法确定4到底是多长,只有定义单位后,如4毫米、4英寸、4个像素等,转化为绝对坐标后才能确定线段的长度。 页面坐标 虚拟的绘图平面使用的坐标,它是绝对坐标,可以设置坐标单位。 设备坐标 输出设备实际使用的坐标。 三种坐标系统默认情况下是重合的,坐标原点都是(0,0),都位于绘制图形区域的左上角。坐标轴方向水平方向向右为正,垂直向向下为正。当进行了坐标变换后,三个坐标系统就可能不重合了。,9.7 Paint事件,Paint事件的代理类型为paintEventHandler, 他所使用的事件参数类型为PaintEventArges. 每次显示,更改大小,移动,最大化,还原或露出窗口时都会执行窗体的Paint事件.在该事件中将重新绘制窗体及其控件.,Paint事件,Protected override void OnPaint(PaintEventArgs e) Graphics g=e. Graphics; ,例:时钟,1、指针类。 class Pointer protected Point ptStart; protected Point ptEnd; protected int length; protected Pen pen; / 无参的构造函数 public Pointer() this.ptStart = new Point(0, 0); this.ptEnd = new Point(0, 0); this.length = 0; this.pen = new Pen(Color.Red, 2); ,/ 有参数的构造函数 /ptStart:起点坐标 / ptEnd:终点坐标 /length:指针长度 /pen:画笔 public Pointer(Point ptStart, Point ptEnd, int length,Pen pen) this.ptStart = ptStart; this.ptEnd = ptEnd; this.length = len

      《C#程序设计实用教程第09章》由会员梦**分享,可在线阅读,更多相关《C#程序设计实用教程第09章》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.