很长一段时间没有更新技术博客了,最近在用C#开发Kinect的程序。所以跟大家分享一下自己一些方面学习和认知。
编写图形程序时需要使用GDI(Graphics Device Interface,图形设备接口),从程序设计的角度看,GDI包括两部分:一部分是GDI对象,另一部分是GDI函数。GDI对象定义了GDI函数使用的工具和环境变量,而GDI函数使用GDI对象绘制各种图形,在C#中,进行图形程序编写时用到的是GDI+(Graphics Device Interface Plus图形设备接口)版本,GDI+是GDI的进一步扩展,它使我们编程更加方便。
C#中的GDI+就相当于java中的Swing控件,是编写图形界面必不可缺的一个接口。GDI+绘图最大的方便得益于C#的可视化编程,所有的控件只需要自己Drag,然后Place,最后Cilck添加监听方法。真的是too young too simple。
绘图的时候要用到Graphics类,所以首先介绍一下Graphics画布
我们首先要创建一个Graphics类实例,这个实例相当于建立了一块画布,有了画布才可以用各种画图方法进行绘图。这个过程其实与java中Swing控件获取画布形式上差不多。
绘图程序的设计过程一般分为两个步骤:(一)创建Graphics对象;(二)使用Graphics对象的方法绘图、显示文本或处理图像。
通常我们使用下述三种方法来创建一个Graphics对象。
方法一、利用控件或窗体的Paint事件中的PainEventArgs
在窗体或控件的Paint事件中接收对图形对象的引用,作为PaintEventArgs(PaintEventArgs指定绘制控件所用的Graphics)的一部分,在为控件创建绘制代码时,通常会使用此方法来获取对图形对象的引用。
例如:
//窗体的Paint事件的响应方法 private void form1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; }
也可以直接重载控件或窗体的OnPaint方法,具体代码如下所示:
protected override void OnPaint(PaintEventArgs e) { Graphics g = e.Graphics; }
Paint事件在重绘控件时发生。
方法二、调用某控件或窗体的CreateGraphics方法
调用某控件或窗体的CreateGraphics方法以获取对Graphics对象的引用,该对象表示该控件或窗体的绘图图面。如果想在已存在的窗体或控件上绘图,通常会使用此方法。
例如:
Graphics g = this.CreateGraphics();
方法三、调用Graphics类的FromImage静态方法
由从Image继承的任何对象创建Graphics对象。在需要更改已存在的图像时,通常会使用此方法。
例如:
//名为“g1.jpg”的图片位于当前路径下 Image img = Image.FromFile("g1.jpg");//建立Image对象 Graphics g = Graphics.FromImage(img);//创建Graphics对象
一般来说,个人第二种方法用的比较多。
再就是常用的画图对象
Pen:用来用patterns、colors或者bitmaps进行填充。
Color:用来画线和多边形,包括矩形、圆和饼形。
Font:用来给文字设置字体格式。
Brush:用来描述颜色。
Rectangle:矩形结构通常用来在窗体上画矩形。
Point:描述一对有序的x,y两个坐标值。
每个画图对象的具体方法在此就不详细说明了,详细内容在开发文档里面。
基本图形的绘制实例
绘制渐变的矩形
代码
/// <summary> /// 重载Form窗体的OnPaint函数 /// </summary> /// <param name="e"></param> protected override void OnPaint(PaintEventArgs e) { Graphics g = e.Graphics; //定义矩形区域 Rectangle rect = new Rectangle(50, 30, 100, 100); //定义画刷对象 LinearGradientBrush lBrush = new LinearGradientBrush(rect, Color.Red, Color.Yellow, LinearGradientMode.BackwardDiagonal); //填充矩形 g.FillRectangle(lBrush, rect); }
其他图形也都可以调用系统提供的绘图方法实现
如DrawArc,DrawLine,DrawEllipse,DrawString,FillPath等等,都可以尝试使用一下
如果以上介绍你对C#中的GDI+编程还不懂,那么来下载个开发文档吧。鉴于以前上传的代码小伙伴们都不能下载。估计是被CSDN收购后冷落其发展的原因,所以以后代码资源都会挂到CSDN上,并附上地址。
GDI+开发文档已经上传到:
http://download.csdn.net/detail/u011458382/6336381
希望大家多多支持和指正。
相关推荐
第06章 c# 的GDI+与图形编程,可以学习参考,希望你喜欢!
超全面的.NET GDI+图形图像编程教程
GDI编程 GDI+ 图形设备接口 C# 北大青鸟高老师
C#通过GDI+绘制带刻度尺的数学坐标系,应用于图形图像编程,各类统计图表绘制,以及对图形图像编程中数值坐标的研究。 调用方式(以WINFORM为例,其他类推).zip
是一些用C#编写的GDI+图形文字处理编程实例
介绍使用C#进行图形图像编程基础,其中包括GDI+绘图基础、C#图像处理基础以及简单的图像处理技术。
.NET Framework的出现给编程带来了极大的改变,图形编程也同样受到了巨大的影响。微软在.NET中把 GDI升级为GDI+,它包含了许多命名空间和类,专门用于Web和Windows控件中的自定义绘图操作。 本书专门讲述了GDI+编程...
C#图形图像编程基础,GDI+绘图基础,非常不错的GDI教程,掌握C#图形界面编程必不可少。
C# GDI+图形程序设计是一本专门讲解C#中GDI编程的书籍,书中有很多实例,这些实例又都很实用,大部分都不太复杂,很适合想学习GDI编程的朋友,源码爱好者提供了老外原版的随书源码,连老外的照片还在呢。
采用C#编程,模拟简单的示波器图形绘制(GDI+画图)
作为新一代操作系统的图形处理内核,GDI+在Windows XP和Windows Server 2003操作系统中扮演着极其重要的角色。 GDI+的出现,是对传统程序员的一种解脱。本书是目前国内少有的全面介绍GDI+编程的参考书。本书从画笔与...
开发工具:VS2008 自定义控件、GDI+图形编程技术, 截图、涂鸦功能。 http://aocdell.ys168.com/
而GDI函数使用GDI对象绘制各种图形,在C#中,进行图形程序编写时用到的是GDI+(Graphics Device Interface Plus图形设备接口)版本,GDI+是GDI的进一步扩展,它使我们编程更加方便。 C#中的GDI+就相当于java中的...
C#图形编程方法与技巧 GDI+提供了一个抽象层,隐藏了不同视频卡之间的区别,这样就可以调用Windows API函数完成指定的任务了,GDI会在内部指出如何让视频卡完成要绘制的图形。GDI还可以完成其他任务。大多数计算机都...