欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    基本图形的绘制ppt课件.ppt

    • 资源ID:6263491       资源大小:220.50KB        全文页数:35页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基本图形的绘制ppt课件.ppt

    基本图形的绘制,西源软件培训中心,回顾,GDI+为开发者提供了一组实现与各种设备(例如监视器,打印机及其它具有图形化能力但不及涉及这些图形细节的设备)进行交互的库函数。GDI+的本质在于,它能够替代开发人员实现与例如显示器及其它外设的交互;而从开发者角度来看,要实现与这些设备的直接交互却是一项艰巨的任务。,目标,掌握GDI+提供的函数和方法的使用讲解一个实例程序,画点,C#采用Point结构和SetPixel()方法完成画点的功能;其中Point用于图形设计,SetPixel()用于图像处理Point原型:public struct Point;使用:public Point p1=new Point();每个点结构有x和y两个属性,表示横纵坐标,如:p1.x=30;p1.y=100;,1)DrawLine方法public void DrawLine(Pen pen,int x1,int y1,int x2,int y2);或 public void DrawLine(Pen pen,Point pt1,Point pt2);如:Graphics g=this.CreateGraphics();Pen p1=new Pen(Color.Red,2);Point pt1=new Point(40,50);Point pt2=new Point(220,150);g.DrawLine(p1,10,20,40,50);g.DrawLine(p1,pt1,pt2);2)DrawLines方法public void DrawLines(Pen pen,Point pts);,画直线,private void Form1_Paint(object sender,e)Pen pen=new Pen(Color.Black,3);Point points=new Point(10,10),new Point(10,100),new Point(200,50),new Point(250,120);e.Graphics.DrawLines(pen,points);,效果,画直线,1)public void DrawEllipse(Pen pen,int x,int y,int width,int height)其中x,y为椭圆外接矩形左上角的坐标,width定义椭圆的外接矩形的宽度,height定义椭圆外接矩形的高度。2)public void DrawEllipse(Pen pen,Rectangle rect)其中rect为Rectangle结构,用于确定椭圆的外接矩形。,画椭圆,public void DrawArc(Pen pen,int x,int y,int width,int height,int startAngle,int sweepAngle)其中x,y为椭圆外接矩形左上角的坐标,width定义椭圆。startAngle圆弧起点,sweepAngle顺时针画过的角度的外接矩形的宽度,height定义椭圆外接矩形的高度。例:Graphics g=this.CreateGraphics();Pen pen=new Pen(Color.Red,2);g.Clear(this.BackColor);g.DrawArc(pen,0,0,200,300,-60,180);,绘制圆弧,public void DrawPie(Pen pen,int x,int y,int width,int height,int startAngle,int sweepAngle)例:Graphics g=this.CreateGraphics();Pen pen=new Pen(Color.Red,2);g.Clear(this.BackColor);g.DrawPie(pen,60,60,160,160,160,200);,DrawPie(扇形),1)public void DrawRectangle(Pen pen,int x,int y,int width,int height)参数含意:2)public void DrawRectangle(Pen pen,Rectangle rect)参数含意:例:private void Form1_Paint(object sender,e)Graphics g=e.Graphics;Pen pen=new Pen(Color.Black,3);Rectangle rect=new Rectangle(30,30,200,100);(pen,rect);,画矩形,3)public void DrawRectangles(Pen pen,Rectangle rects)该方法用于绘制多个矩形。例:private void Form1_Paint(object sender,e)Graphics g=e.Graphics;Pen pen=new Pen(Color.Black,3);Rectangle rects=new Rectangle(0,0,100,200),new Rectangle(100,200,250,50),new Rectangle(300,0,50,100;(pen,rects);,画矩形,每段贝塞尔曲线都需要四个点,第一个点是起始点,第四个点是终止点,第二个点和第三个点控制曲线的形状。使用DrawBezier()方法绘制一段贝塞尔曲线,使用DrawBeziers()方法绘制多段贝塞尔曲线。常用形式有:1)public void DrawBezier(Pen pen,float x1,float y1,float x2,float y2,float x3,float y3,float x4,float y4)2)public void DrawBezier(Pen pen,Point pt1,Point pt2,Point pt3,Point pt4)3)public void DrawBeziers(Pen pen,Point points)其中points是Point结构的数组,第一段贝塞尔曲线从点数组中的第一个点到第四个点绘制而成。以后每段曲线只需要三个点:两个控制点和一个结束点。前一段曲线的结束点会自动用作后一段曲线的起始点。,Bezier,private void Form1_Paint(object sender,PaintEventArgs e)Pen blackPen=new Pen(Color.Black,3);Point bezierPoints=new Point(50,100),new Point(100,10),new Point(150,290),new Point(200,100),new Point(250,10),new Point(300,290),new Point(350,100);(blackPen,bezierPoints);,示例,public void DrawPolygon(Pen pen,Point points);public void DrawPolygon(Pen pen,PointF points);其中:PointF表示在二维平面中定义点的、浮点 x 和 y 坐标的有序对 例:画一个四边形private void button_Click(object sender,System.EventArgs e)Graphics g=this.CreateGraphics();Pen pen=new Pen(Color.Red,2);g.Clear(this.BackColor);Point p1=new Point new Point(10,120),new Point(120,100),new Point(300,180),new Point(60,200);g.DrawPolygon(pen,p1);,DrawPolygon(多边形),这个方法用平滑的曲线将各节点连接起来,但会自动把首尾节点连接起来构成封闭曲线。public void DrawClosedCurve(Pen pen,Point pts);public void DrawClosedCurve(Pen pen,PointF pts);public void DrawClosedCurve(Pen,Point,float,FillMode);public void DrawClosedCurve(Pen,PointF,float,FillMode);其中float型参数指定弯曲强度,该值范围为0.0f 1.0f,超出此范围会产生异常,当弯曲强度为零时,就是直线,默认张力为0.5。示例:Pen blackPen=new Pen(Color.Black);Point p1=new Point new Point(10,120),new Point(120,100),new Point(300,180),new Point(60,200);g.DrawClosedCurve(blackPen,p1);,DrawClosedCurve方法,DrawCurve方法(以四个点画出一条基本曲线)绘制经过一组指定的Point结构数组定义的曲线,最后一个点与第一个点间不画线。public void DrawCurve(Pen pen,Point pts);public void DrawCurve(Pen pen,PointF pts);public void DrawCurve(Pen,Point,float);public void DrawCurve(Pen,PointF,float);其中float参数代表曲线弯曲的强度。示例:private void button_Click(object sender,System.EventArgs e)Graphics g=this.CreateGraphics();g.Clear(this.BackColor);Pen blackPen=new Pen(Color.Black,3);Point p1=new Point new Point(10,120),new Point(120,100),new Point(300,180),new Point(60,200);g.DrawCurve(blackPen,p1);,DrawCurve方法,private void Form1_Paint(object sender,PaintEventArgs e)Pen redPen=new Pen(Color.Red,3);Pen greenPen=new Pen(Color.Green,3);Point curvePoints=new Point(50,250),new Point(100,25),new Point(200,250),new Point(250,50),new Point(300,75),new Point(350,200),new Point(400,150);e.Graphics.DrawLines(redPen,curvePoints);e.Graphics.DrawCurve(greenPen,curvePoints);,绘制直线与平滑曲线示例,路径通过组合直线、矩形和简单的曲线形成的,可通过Graphics类DrawPath方法来绘制整个路径的各个对象。public void DrawPath(Pen pen,GraphicsPath path);示例:private void button_Click(object sender,System.EventArgs e)Graphics g=this.CreateGraphics();GraphicsPath graphPath=new GraphicsPath();graphPath.AddEllipse(0,0,200,100);graphPath.AddRectangle(new Rectangle(100,80,200,100);graphPath.AddBezier(30,60,70,60,50,30,100,10);Pen blackPen=new Pen(Color.Black,3);g.DrawPath(blackPen,graphPath);,DrawPath方法,该方法用于画一个填充椭圆,常用格式有:public void FillEllipse(Brush brush,int x,int y,int width,int height);public void FillEllipse(Brush brush,RectangleF rect);示例:private void button_Click(object sender,System.EventArgs e)Graphics g=this.CreateGraphics();g.Clear(this.BackColor);Brush sp=new SolidBrush(Color.Red);g.FillEllipse(sp,80,90,200,100);,FillEllipse方法,该方法用于画一个填充矩形,常用格式有:public void FillRectangle(Brush brush,int x,int y,int width,int height);public void FillRectangle(Brush brush,Rectangle rect);示例:private void button_Click(object sender,System.EventArgs e)Graphics g=this.CreateGraphics();g.Clear(this.BackColor);Brush sp=new SolidBrush(Color.Red);g.FillRectangle(sp,80,90,200,100);,FillRectangle方法,该方法用于画一个填充饼图,常用格式有:public void FillPie(Brush brush,int x,int y,int width,int height,int startAngle,int sweepAngle);2)public void FillPie(Brush brush,RectangleF rect,float startAngle,float sweepAngle);示例:private void button_Click(object sender,System.EventArgs e)Graphics g=this.CreateGraphics();g.Clear(this.BackColor);Brush sp=new SolidBrush(Color.Red);g.FillPie(sp,80,90,200,100,-60,300);,FillPie方法,设计一个简单绘图板,功能类似Windows画图工具。功能有:能由鼠标控制绘制直线、矩形、椭圆,曲线,并能控制线条的颜色。,简单绘图板示例程序讲解,程序界面作成,在Form中拖入pictureBox和button控件,并进行合理布局。使界面如下:,在“直线”按钮Click事件中输入代码:Point p1=new Point(10,10);Point p2=new Point(50,50);Graphics g=();Pen pen=new Pen(Color.Black,1);g.DrawLine(pen,p1,p2);,简单绘图板示例程序讲解,1.“直线”起点坐标获取:在控件pictureBox1中按下鼠标左键获取起点p1(X,Y),在pictureBox1_MouseDown事件中输入代码:Point p1=Point.Empty,p2=Point.Empty;p1.X=e.X;p1.Y=e.Y;p2.X=100;p2.Y=100;Graphics g=this.pictureBox1.CreateGraphics();Pen pen=new Pen(Color.Black,1);g.DrawLine(pen,p1,p2);,简单绘图板示例程序讲解,2.“直线”终点坐标获取:在控件pictureBox1中松开鼠标左键获取终点p2(X,Y),在pictureBox1_MouseUp事件中输入代码:Point p1=Point.Empty,p2=Point.Empty;p1.X=100;p1.Y=100;p2.X=e.X;p2.Y=e.Y;Graphics g=this.pictureBox1.CreateGraphics();Pen pen=new Pen(Color.Black,1);g.DrawLine(pen,p1,p2);3.对程序进行调整,使直线的起点和终点都从光标获取。private void pictureBox1_MouseDown()p1.X=e.X;p1.Y=e.Y;private void pictureBox1_MouseUp()p2.X=e.X;p2.Y=e.Y;Graphics g=this.pictureBox1.CreateGraphics();Pen pen=new Pen(Color.Black,1);g.DrawLine(pen,p1,p2);,简单绘图板示例程序讲解,4.直线起点确定后,在pictureBox1控件中移动鼠标时,使直线可见,在pictureBox1_MouseMove事件中输入代码:先设置全局bool变量MouseDown,表示鼠标左键是否按下。if(MouseDown)Graphics g=this.pictureBox1.CreateGraphics();Pen pen=new Pen(Color.White,1);g.DrawLine(pen,p1,p2);/清除前一根直线p2.X=e.X;p2.Y=e.Y;pen=new Pen(Color.Black,1);g.DrawLine(pen,p1,p2);g.Dispose();,简单绘图板示例程序讲解,5.移动鼠标时,为了原有直线不被清除,在MouseMove事件重画原有的图形,那么必须先在MouseUp事件中保存每个已画的图形特征。先设置全局动态数组和结构。ArrayList addArray=new ArrayList();public struct SharpType public string type;/图形形状public Point p1,p2;public Color foreColor;/画笔颜色 public SharpType(string type,Point p1,Point p2,Color foreColor)this.type=type;this.p1=p1;this.p2=p2;this.foreColor=foreColor;,简单绘图板示例程序讲解,Mouse MouseUp事件中加入代码:addArray.Add(new SharpType(DrawLine,p1,p2,Color.Black);MouseMove事件中加入代码:foreach(SharpType type in addArray)if(type.type=DrawLine)g.DrawLine(new Pen(type.foreColor,1),type.p1,type.p2);,简单绘图板示例程序讲解,6.当移动窗体或被其他窗体遮住后再次显示时,为了使原有直线不被清除,在Paint事件重画原有的图形,Paint事件中代码如下:foreach(SharpType type in addArray)if(type.type=DrawLine)e.Graphics.DrawLine(new Pen(type.foreColor,1),type.p1,type.p2);,简单绘图板示例程序讲解,7.通过对话框设置颜色,在“选择颜色”按钮事件中加入代码如下:先设置全局变量color,对画笔中的颜色设置代码作相应的修改,把Color.Black 改为color。ColorDialog ColorDialog1=new ColorDialog();if(ColorDialog1.ShowDialog()!=DialogResult.Cancel)this.color=ColorDialog1.Color;,简单绘图板示例程序讲解,作业-类似windows画图的绘图板,要求效果如下:,作业-一个简单的-仿QQ截图,要求如下图:图一,作业-一个简单的-仿QQ截图,图二,作业-一个简单的-仿QQ截图,分析:聊天窗体上有一个截图按钮,点击按钮后,程序将整个屏幕画在一个新的全屏窗体上,然后显示这个窗体.因为是全屏的窗体,并且隐藏了菜单栏、工具栏等,所以在我们看来就好像是一个桌面的截图,然后在这个新窗体上画矩形,最后保存矩形中的内容并显示在原来的聊天窗体中.,

    注意事项

    本文(基本图形的绘制ppt课件.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开