随笔 - 63  文章 - 72  评论 - 951  阅读 - 140万 
    最近对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, 1010100100);//在画板上画直线,起始坐标为(10,10),终点坐标为(100,100)
            g.DrawRectangle(p, 1010100100);//在画板上画矩形,起始坐标为(10,10),宽为,高为
            g.DrawEllipse(p, 1010100100);//在画板上画椭圆,起始坐标为(10,10),外接矩形的宽为,高为
        }


        
效果图如下:

 

 这片文章其实我在我的还一个博客http://blog.54master.com/index.php/586951/ 中有发布过,但是续片一直发不上,不知道怎么回事,所以搬家到这,重新发!

 

其它相关链接:

      c# GDI+简单绘图(一):介绍GDI+ 基础知识

      c# GDI+简单绘图(二):介绍GDI+绘图知识

      c# GDI+简单绘图(三):实现仿QQ截图功能     

      c# GDI+简单绘图(四): 实现仿WINDOWS 画板功能

posted on   stg609  阅读(157370)  评论(16编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
分享按钮
点击右上角即可分享
微信分享提示