C#程序设计 c# programming GDI+绘图 C#程序设计课程组.

Slides:



Advertisements
Similar presentations
四川财经职业学院会计一系会计综合实训 目录 情境 1.1 企业认知 情境 1.3 日常经济业务核算 情境 1.4 产品成本核算 情境 1.5 编制报表前准备工作 情境 1.6 期末会计报表的编制 情境 1.2 建账.
Advertisements

主编:邓萌 【点按任意键进入】 【第六单元】 教育口语. 幼儿教师教育口 语概论 模块一 幼儿教师教育口语 分类训练 模块二 适应不同对象的教 育口语 模块三 《幼儿教师口语》编写组.
第一組 加減法 思澄、博軒、暐翔、寒菱. 大綱 1. 加減法本質 2. 迷思概念 3. 一 ~ 七冊分析 4. 教材特色.
海南医学院附 院妇产科教室 华少平 妊娠合并心脏病  概述  妊娠、分娩对心脏病的影响  心脏病对妊娠、分娩的影响  妊娠合病心脏病的种类  妊娠合并心脏病对胎儿的影响  诊断  防治.
植树节的由来 植树节的意义 各国的植树节 纪念中山先生 植树节的由来 历史发展到今天, “ 植树造林,绿化祖国 ” 的热潮漫卷 了中华大地。从沿海到内地,从城市到乡村,涌现了多少 造林模范,留下了多少感人的故事。婴儿出世,父母栽一 棵小白怕,盼望孩子和小树一样浴光吮露,茁壮成长;男 女成婚,新人双双植一株嫩柳,象征家庭美满,幸福久长;
客户协议书 填写样本和说明 河南省郑州市金水路 299 号浦发国际金融中 心 13 层 吉林钰鸿国创贵金属经营有 限公司.
浙江省县级公立医院改革与剖析 马 进 上海交通大学公共卫生学院
第二章 环境.
教师招聘考试 政策解读 讲师:卢建鹏
慢性病防治與運動 你今天運動了嗎?.
了解语文课程的基本理念,把握语文素养的构成要素。 把握语文教育的特点,特别是开放而有活力的语文课程的特点。
北台小学 构建和谐师生关系 做幸福教师 2012—2013上职工大会.
福榮街官立小學 我家孩子上小一.
第2期技職教育再造方案(草案) 教育部 101年12月12日 1 1.
企业员工心态管理培训 企业员工心态管理培训讲师:谭小琥.
历史人物的研究 ----曾国藩 组员: 乔立蓉 杜曜芳 杨慧 组长:马学思 杜志丹 史敦慧 王晶.
教育部高职高专英语类专业教学指导委员会 刘黛琳 山东 • 二○一一年八月
淡雅诗韵 七(12)班 第二组 蔡聿桐.
第七届全国英语专业院长/系主任高级论坛 汇报材料
小數怕長計, 高糖飲品要節制 瑪麗醫院營養師 張桂嫦.
制冷和空调设备运用与维修专业 全日制2+1中等职业技术专业.
会计信息分析与运用 —浙江古越龙山酒股份有限公司财务分析 组员:2006级工商企业管理专业 金国芳 叶乐慧 魏观红 徐挺挺 虞琴琴.
第六章 人体生命活动的调节 人体对外界环境的感知.
芹菜 英语051班 9号 黄秋迎 概论:芹菜是常用蔬菜之一,既可热炒,又能凉拌,深受人们喜爱。近年来诸多研究表明,这是一种具有很好药用价值的植物。 别名:旱芹、样芹菜、药芹、香芹、蒲芹 。 芹菜属于花,芽及茎类。
2012年 学生党支部书记工作交流 大连理工大学 建工学部 孟秀英
北京市职业技能鉴定管理中心试题管理科.
2014吉林市卫生局事业单位招聘153名工作人员公告解读
各類所得扣繳法令 與申報實務 財政部北區國稅局桃園分局 103年9月25日
初級游泳教學.
爱国卫生工作的持续发展 区爱卫办 俞贞龙.
第八章 数学活动 方程组图象解法和实际应用
本课内容提要 一、汇率的含义 二、汇率变化与币值的关系 三、汇率变化的影响. 本课内容提要 一、汇率的含义 二、汇率变化与币值的关系 三、汇率变化的影响.
散文鉴赏方法谈.
比亚迪集成创新模式探究 深圳大学2010届本科毕业论文答辩 姓名:卓华毅 专业:工商管理 学号: 指导老师:刘莉
如何撰写青年基金申请书 报 告 人: 吴 金 随.
点击输 入标题 点击输入说明性文字.
國際志工海外僑校服務 越南 國立臺中教育大學 2010年國際志工團隊.
痰 饮.
學分抵免原則及 學分抵免線上操作說明會.
教 学 查 房 黄宗海 南方医科大学第二临床医学院 外科学教研室.
评 建 工 作 安 排.
“十二五”国家科技计划经费管理改革培训 概预算申报与审批 国家科学技术部 2012年5月.
“十二五”国家科技计划经费管理改革培训 概预算申报与审批 国家科学技术部 2012年5月.
首都体育学院 武术与表演学院 张长念 太极拳技击运用之擒拿 首都体育学院 武术与表演学院 张长念
现行英语中考考试内容与形式的利与弊 黑龙江省教育学院 于 钢 2016, 07,黄山.
第5讲:比较安全学的创建 吴 超 教授 (O)
彰化縣西勢國小備課工作坊 新生入學的班級經營 主講:黃盈禎
重庆市西永组团K标准分区基本情况介绍.
西貢區歷史文化 清水灣 鍾礎營,楊柳鈞,林顥霖, 譚咏欣,陳昭龍.
所得稅扣繳法令與實務 財政部北區國稅局桃園分局 102年12月19日 1 1.
角 色 造 型 第四章 欧式卡通造型 主讲:李娜.
走进校园流行 高二15班政治组 指导老师:曾森治老师.
医院文化建设 广东省中医院 2011年3月26日.番禺.
案例:海底捞模式 ——把服务做到极致.
医疗法律法规培训 连云港市东辛农场医院 周卫平 二0一四年十二月.
项目:贪吃蛇游戏设计 工作任务一:系统设计(system design) 工作任务二:豆类(Bean)设计
CH09.
14 繪圖與動畫 [我的小畫家][打磚塊遊戲] 14-1 繪圖的基礎 14-2 滑鼠事件與基本繪圖 14-3 在Bitmap物件繪圖
第十八章 图形和多媒体.
6.1VB.net概述 6.2初学者工具包 6.3图形图像处理 6.4声音及视频处理
第 11 章 繪圖與多媒體.
项目五 窗体上绘图 任务列表: 1、在窗体上绘制各种基本图形 2、在窗体上绘制文本.
C#图形程序设计基础 1 GDI+绘图基础 2 基本图形的绘制 3 实用图形程序设计.
Windows 程式設計 (使用 C++ / C#)
第5章 .NET框架类 5.
Windows Form绘图类及其简介.
第12章 繪圖與多媒體 12-1 繪圖的基礎 12-2 繪出文字和圖形 12-3 載入與顯示圖形檔案 12-4 建立多媒體的動畫效果
第6章 GDI+编程 GDI+ 已完全替代 GDI,以图形图像作为对象,可在 Windows 窗体应用程序中以编程方式绘制或操作图形图像。虽然无法对 Web 窗体直接使用 GDI+,但可以通过 Web 服务器的“图像”(Image) 控件显示图形图像。 处理图像图形包括创建 Graphics 对象,使用.
书包是我们的“家”,小主人用完我们,我们得赶快回家 !
操場 操場 本校各處室位置圖說明 本校各處室位置圖說明 經營大樓 經營大樓 綜合大樓 綜合大樓 操 場 操 場 校門口 校門口
Presentation transcript:

C#程序设计 c# programming GDI+绘图 C#程序设计课程组

教学内容 GDI+概述 绘图实例

GDI+概述

什么是GDI+? 想一下,如果同学们要进行绘画,你要准备什么工作? 怎么样开始绘画呢?

GDI+的基本概念 GDI:即Graphics Device Interface,图形设备接口 GDI+是Microsoft的新一代的二维图形系统,它完全面向对象,可在Windows窗体应用程序中以编程方式绘制或操作图形图像。

System.Drawing.Imaging GDI+的命名空间 .NET框架命名空间 System.Drawing System.Drawing2D System.Drawing.Imaging System.Drawing.Text 提供了对GDI+基本图形功能的访问,对于进行一般的图形绘制来说足够了! 提供高级的二维和矢量图形功能。 提供高级GDI+图像处理功能。 提供GDI+高级排版功能。该命名空间允许用户使用多种字体,

GDI+结构?

Graphics对象 Graphics类是核心,创建的Graphics对象相当于一张画布。 一般,图形设计过程分为两步:

创建Graphics对象的方法 A 利用窗体或控件的Paint事件的参数PaintEventArgs private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e){ Graphics g=e.Graphics; } B(一般使用)使用窗体或控件的CreateGraphics方法,用于对象已经存在的情况下: Graphics g; g=this.CreateGraphics(); C 使用Image类的派生类创建Graphics对象,用于在C#中对图像进行处理的场合: Bitmap b=new Bitmap("ddd.bmp"); Graphics g=Graphics.FromImage(b);

Pen对象 Pen 对象又称为画笔对象。 用途:绘制线条、多边形、曲线等几何图形。 Pen 对象的主要属性:宽度、样式、颜色 Pen p1=new Pen(Color);//创建某一颜色的Pen 对象 Pen p2=new Pen(Brush);//创建某一刷子样式的Pen 对象 Pen p3=new Pen(Brush,float);//创建某一刷子样式并具有相应宽度的的Pen 对象 Pen p4=new Pen(Color,float);//创建某一颜色和相应宽度的Pen 对象

Brush对象(画刷) 作用:一般用来填充图形。 Brush类是一个抽象类,不能实例化,只能使用它的派生类 SolidBrush(单色画刷) (包含在命名空间System.Drawing中)、 HatchBrush(阴影画刷)、 LinearGradientBrush(颜色渐变画刷)、 PathGradientBrush(使用路径及复杂的混色渐变画刷)、 TextureBrush(纹理画刷)

Font对象 Font对象建立不同的字体。 Font对象的常用属性如下:Bold、Italic、Regular、Strikeout、Underline等等。 Graphics g=this.CreateGraphics(); Font fi=new Font("Tahoma",20,FontStyle.Bold|FontStyle.Italic); g.DrawString("GDI+编程世界",fi,new SolidBrush(Color.Blue),14,10);

常用图形的绘制 1、画直线 使用Graphics类的DrawLine方法,格式为: DrawLine(画笔,x1,y1,x2,y2) Graphics g=this.CreateGraphics();//生成图形对象 Pen Mypen=new Pen(Color.Blue ,5);//生成画笔,蓝色,5个像素 g.DrawLine(Mypen,1,1,30,30);//画线 Point pt1=new Point(1,30);//生成起点 Point pt2=new Point(30,1);//生成终点 g.DrawLine(Mypen,pt1,pt2);//画线

使用Graphics类的DrawEllipse方法,格式为: A、DrawEllipse (画笔,矩形结构数据) 2、画椭圆 使用Graphics类的DrawEllipse方法,格式为: A、DrawEllipse (画笔,矩形结构数据) 功能:绘制一个边界由矩形结构数据定义的椭圆。 B、DrawEllipse (画笔,x,y,width,height) 功能:绘制一个由边框定义的椭圆。 Graphics g=this.CreateGraphics();//生成图形对象 Pen Mypen=new Pen(Color.Blue ,5);//生成画笔,蓝色,5个像素 g.DrawEllipse(Mypen,1,1,80,40);//画椭圆 Rectangle rect=new Rectangle(85,1,165,40);//生成矩形 g.DrawEllipse (Mypen,rect);//画椭圆

使用Graphics类的DrawArc方法,格式为: A、DrawArc (画笔,矩形结构数据,实数,实数) 3、画圆弧 使用Graphics类的DrawArc方法,格式为: A、DrawArc (画笔,矩形结构数据,实数,实数) 功能:绘制由指定矩形的内接椭圆的一段圆弧。 B、DrawArc (画笔,x,y,width,height,整数,整数) 功能:绘制一段弧线,该弧线由一对坐标、宽度、高度指定椭圆的一段圆弧。 Graphics g=this.CreateGraphics();//生成图形对象 Pen Mypen=new Pen(Color.Blue ,5);//生成画笔,蓝色,5个像素 g.DrawArc(Mypen,1,1,80,40,90,270);//画弧线 Rectangle rect=new Rectangle(85,1,165,40);//生成起点 生成矩形结构 g.DrawArc (Mypen,rect,0,90);//画弧线

使用Graphics类的DrawPie方法,格式与DrawArc基本相同 4、画扇形图 使用Graphics类的DrawPie方法,格式与DrawArc基本相同 Graphics g=this.CreateGraphics();//生成图形对象 Pen Mypen=new Pen(Color.Blue ,5);//生成画笔,蓝色,5个像素 g.DrawPie(Mypen,1,1,80,40,90,270);//画扇形 Rectangle rect=new Rectangle(85,1,165,40);//生成矩形 g.DrawPie (Mypen,rect,0,90);//画扇形

使用Graphics类的DrawRectangle方法,格式为: A、DrawRectangle (画笔,矩形结构数据) 5、画矩形 使用Graphics类的DrawRectangle方法,格式为: A、DrawRectangle (画笔,矩形结构数据) 功能:绘制一个边界由矩形结构数据定义的矩形。 B、DrawRectangle (画笔,x,y,width,height) 功能:绘制一个由左上角坐标、宽度、高度定义的矩形 Graphics g=this.CreateGraphics();//生成图形对象 Pen Mypen=new Pen(Color.Blue ,2);//生成画笔,蓝色,2个像素 g.DrawRectangle (Mypen,5,5,80,40);//画矩形 Rectangle rect=new Rectangle(85,15,140,50);//生成矩形 g.DrawRectangle (Mypen,rect);//画矩形

使用Graphics类的DrawPolygon方法,格式为: A、DrawPolygon (画笔,Point[] points) 6、画多边形 使用Graphics类的DrawPolygon方法,格式为: A、DrawPolygon (画笔,Point[] points) 功能:绘制由一组Point结构定义的多边形。 B、DrawPolygon (画笔,PointF[] points) 功能:绘制由一组PointF结构定义的多边形 Point 结构只能取整数,PointF可以取实数 Pen blackPen = new Pen(Color.Black, 3);//生成画笔; Graphics g=this.CreateGraphics();//生成图形对象 Point point1 = new Point( 50, 50);//生成5个点 Point point2 = new Point(70, 25);Point point3 = new Point(100, 30); Point point4 = new Point(120, 85);Point point5 = new Point(80, 100); Point[] curvePoints ={point1,point2,point3,point4,point5}; //定义Point结构的数组 g.DrawPolygon(blackPen, curvePoints);//绘制多边形

使用Graphics类的DrawClosedCurve方法,格式为: 7、绘制闭合曲线 使用Graphics类的DrawClosedCurve方法,格式为: A、 DrawClosedCurve (画笔,Point[] points) 功能:绘制由一组Point结构定义的闭合曲线。默认张力为0.5 B、 DrawClosedCurve (画笔,Point[] points,float s,FillMode F) 功能:使用指定张力绘制由一组Point结构定义的闭合基数样条 s为指定曲线的张力,F为填充曲线的方式 Graphics g=this.CreateGraphics(); Pen p=new Pen(Color.Black,3); Point p1=new Point(50,50); Point p2=new Point(70,25); Point p3=new Point(100,30); Point p4=new Point(120,85); Point p5=new Point(80,100); Point[] ps={p1,p2,p3,p4,p5}; g.DrawClosedCurve(p,ps,0.9F,FillMode.Alternate);

典型实例

GDI+制作电子石英钟

建立画布 设置画笔 绘制中心点 绘制表盘 分别绘制3,6,9,12点 绘制时针、分针、秒针 使用TIMER控件设置动画

建立画布 Graphics g; g = this.CreateGraphics(); Pen hPen = new Pen(Color.Red, 4); //定义用来绘制小时的Pen Pen mPen = new Pen(Color.Green, 2); //定义用来绘制分钟的Pen Pen sPen = new Pen(Color.Black, 1); //定义用来绘制秒钟的Pen 建立画笔 g.DrawEllipse(new Pen(Color.Tomato), this.Width / 2 - 90, this.Height / 2 - 90, 180, 180); 绘制表盘 g.FillEllipse(Brushes.Red, this.Width / 2 - 5, this.Height / 2 - 5, 10, 10); //绘制中心点 绘制中心点

分别绘制3,6,9,12点 g.DrawString("3", new Font("隶书", 12), Brushes.Red, this.Width / 2 + 90, this.Height / 2-5); g.DrawString("6", new Font("隶书", 12), Brushes.Red, this.Width / 2 - 5, this.Height / 2 + 90); g.DrawString("9",new Font("隶书",12),Brushes.Red,this.Width/2-90,this.Height/2-5); g.DrawString("12", new Font("隶书", 12), Brushes.Red, this.Width / 2 - 5, this.Height / 2 - 90); //分别绘制3,6,9,12点

double hd = Convert.ToDouble(30 * h * Math.PI / 180); double md = Convert.ToDouble(6 * m * Math.PI / 180); double sd = Convert.ToDouble(6 * s * Math.PI / 180); Point hp = new Point((c.X + Convert.ToInt32((Math.Sin(hd)) * 30)), (c.Y - Convert.ToInt32((Math.Cos(hd)) * 30))); //时钟的坐标点 Point mp = new Point((c.X + Convert.ToInt32((Math.Sin(md)) * 60)), (c.Y - Convert.ToInt32((Math.Cos(md)) * 60))); //分钟的坐标点 Point sp = new Point((c.X + Convert.ToInt32((Math.Sin(sd)) * 90)), (c.Y - Convert.ToInt32((Math.Cos(sd)) * 90))); //秒钟的坐标点 g.DrawLine(hPen, c, hp); g.DrawLine(mPen, c, mp); g.DrawLine(sPen, c, sp);

如何用GDI+制作漂亮的电子石英钟?

Thank you!