深入c# GDI+简单绘图的具体操作步骤(一)
程序员文章站
2023-12-18 12:38:52
最近对gdi+这个东西接触的比较多,也做了些简单的实例,比如绘图板,仿qq截图等. 最早接触这个类,是因为想做仿qq截图的效果.巧的很,学会了如何做截图后,.net课堂上老...
最近对gdi+这个东西接触的比较多,也做了些简单的实例,比如绘图板,仿qq截图等.
最早接触这个类,是因为想做仿qq截图的效果.巧的很,学会了如何做截图后,.net课堂上老师也正巧要讲关于c#绘图方面的知识,并且我自己又在网上学习金老师的培训班,也是要用到这个类.在学习中有一些体会,所以准备把这些体会记下来,因为内容比较多,可能我会分几次写.
废话不多说了,我们先来认识一下这个gdi+,看看它到底长什么样.
gdi+:graphics device interface plus也就是图形设备接口,提供了各种丰富的图形图像处理功能;在c#.net中,使用gdi+处理二维(2d)的图形和图像,使用directx处理三维(3d)的图形图像,图形图像处理用到的主要命名空间是system . drawing:提供了对gdi+基本图形功能的访问,主要有graphics类、bitmap类、从brush类继承的类、font类、icon类、image类、pen类、color类等.
大概了解了什么是gdi+后,我们来看一下绘图要用到的主要工具,要画图,肯定要画板吧,在c#中画板可以通过graphics这个类来创建,有了画板,总得弄个笔什么之类的吧,不然怎么画呀,难不成我们用手指画.笔又可以分好多种类,比如铅笔,画刷等.它们的区别主要是铅笔可以用来画线条,而画刷呢,嘿嘿,自己考虑下.在c#中我们可以用pen,brush类来实现类似功能.颜料则自然是用color类了.
有了工具,我们就可以开始动手了!(所需命名空间:using system.drawing;)
实现效果:在空白窗体中画基本图形
首先准备一个画板:
创建一个画板主要有3种方式:
a: 在窗体或控件的paint事件中直接引用graphics对象
b: 利用窗体或某个控件的creategraphics方法
c: 从继承自图像的任何对象创建graphics对象
这次我们就先以a为例说明问题:
private void form1_paint(object sender, painteventargs e)
{
graphics g = e.graphics; //创建画板,这里的画板是由form提供的.
}
然后,我们要只笔:
private void form1_paint(object sender, painteventargs e)
{
graphics g = e.graphics; //创建画板,这里的画板是由form提供的.
pen p = new pen(color.blue, 2);//定义了一个蓝色,宽度为的画笔
}
接下来我们就可以来画画了.
private void form1_paint(object sender, painteventargs e)
{
graphics g = e.graphics; //创建画板,这里的画板是由form提供的.
pen p = new pen(color.blue, 2);//定义了一个蓝色,宽度为的画笔
g.drawline(p, 10, 10, 100, 100);//在画板上画直线,起始坐标为(10,10),终点坐标为(100,100)
g.drawrectangle(p, 10, 10, 100, 100);//在画板上画矩形,起始坐标为(10,10),宽为,高为
g.drawellipse(p, 10, 10, 100, 100);//在画板上画椭圆,起始坐标为(10,10),外接矩形的宽为,高为
}
效果图如下所示:
最早接触这个类,是因为想做仿qq截图的效果.巧的很,学会了如何做截图后,.net课堂上老师也正巧要讲关于c#绘图方面的知识,并且我自己又在网上学习金老师的培训班,也是要用到这个类.在学习中有一些体会,所以准备把这些体会记下来,因为内容比较多,可能我会分几次写.
废话不多说了,我们先来认识一下这个gdi+,看看它到底长什么样.
gdi+:graphics device interface plus也就是图形设备接口,提供了各种丰富的图形图像处理功能;在c#.net中,使用gdi+处理二维(2d)的图形和图像,使用directx处理三维(3d)的图形图像,图形图像处理用到的主要命名空间是system . drawing:提供了对gdi+基本图形功能的访问,主要有graphics类、bitmap类、从brush类继承的类、font类、icon类、image类、pen类、color类等.
大概了解了什么是gdi+后,我们来看一下绘图要用到的主要工具,要画图,肯定要画板吧,在c#中画板可以通过graphics这个类来创建,有了画板,总得弄个笔什么之类的吧,不然怎么画呀,难不成我们用手指画.笔又可以分好多种类,比如铅笔,画刷等.它们的区别主要是铅笔可以用来画线条,而画刷呢,嘿嘿,自己考虑下.在c#中我们可以用pen,brush类来实现类似功能.颜料则自然是用color类了.
有了工具,我们就可以开始动手了!(所需命名空间:using system.drawing;)
实现效果:在空白窗体中画基本图形
首先准备一个画板:
创建一个画板主要有3种方式:
a: 在窗体或控件的paint事件中直接引用graphics对象
b: 利用窗体或某个控件的creategraphics方法
c: 从继承自图像的任何对象创建graphics对象
这次我们就先以a为例说明问题:
复制代码 代码如下:
private void form1_paint(object sender, painteventargs e)
{
graphics g = e.graphics; //创建画板,这里的画板是由form提供的.
}
然后,我们要只笔:
复制代码 代码如下:
private void form1_paint(object sender, painteventargs e)
{
graphics g = e.graphics; //创建画板,这里的画板是由form提供的.
pen p = new pen(color.blue, 2);//定义了一个蓝色,宽度为的画笔
}
接下来我们就可以来画画了.
复制代码 代码如下:
private void form1_paint(object sender, painteventargs e)
{
graphics g = e.graphics; //创建画板,这里的画板是由form提供的.
pen p = new pen(color.blue, 2);//定义了一个蓝色,宽度为的画笔
g.drawline(p, 10, 10, 100, 100);//在画板上画直线,起始坐标为(10,10),终点坐标为(100,100)
g.drawrectangle(p, 10, 10, 100, 100);//在画板上画矩形,起始坐标为(10,10),宽为,高为
g.drawellipse(p, 10, 10, 100, 100);//在画板上画椭圆,起始坐标为(10,10),外接矩形的宽为,高为
}
效果图如下所示: