axis1 c# 接口 调用_C#图形编程GDI+基础

本文介绍了C#中GDI+的基础知识,它是图形编程的重要接口,类似于Java的Swing。GDI+通过Graphics类提供画布,创建Graphics对象主要有三种方式:通过Paint事件、重载OnPaint方法或调用CreateGraphics。文章还提到了常用的绘图对象如Pen、Color、Font、Brush和Rectangle,并展示了如何绘制渐变矩形。此外,还预告了.NET Core中依赖注入容器DI的直播课程。

公众号:thinger_net加关注     

       编写图形程序时需要使用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)的一部分,在为控件创建绘制代码时,通常会使用此方法来获取对图形对象的引用。

例如: 

C#代码 

bf6916cc17035ac257cdfee9e62e0710.png

也可以直接重载控件或窗体的OnPaint方法,具体代码如下所示: 

C#代码

5633b4c5291a39cffb3e881abd978b0e.png

Paint事件在重绘控件时发生。

方法二、调用某控件或窗体的CreateGraphics方法 

调用某控件或窗体的CreateGraphics方法以获取对Graphics对象的引用,该对象表示该控件或窗体的绘图图面。如果想在已存在的窗体或控件上绘图,通常会使用此方法。

例如: 

C#代码  

c0db6382e64d598597a017633774a3ca.png

方法三、调用Graphics类的FromImage静态方法 

由从Image继承的任何对象创建Graphics对象。在需要更改已存在的图像时,通常会使用此方法。

例如: 

C#代码 

1a8548861bfb19e84f3719c7493528fd.png

一般来说,个人第二种方法用的比较多。

再就是常用的画图对象

Pen:用来用patterns、colors或者bitmaps进行填充。

Color:用来画线和多边形,包括矩形、圆和饼形。

Font:用来给文字设置字体格式。

Brush:用来描述颜色。

Rectangle:矩形结构通常用来在窗体上画矩形。

Point:描述一对有序的x,y两个坐标值。

每个画图对象的具体方法在此就不详细说明了,详细内容在开发文档里面。

基本图形的绘制实例

绘制渐变的矩形

44479ea6e50cec36e5ad2533c7077dac.png

C#代码

3b5c8cdd9805557deff645954c60b13c.png

a21062e1b6ba523b01a671889bd13815.png

其他图形也都可以调用系统提供的绘图方法实现

如DrawArc,DrawLine,DrawEllipse,DrawString,FillPath等等,都可以尝试使用一下。

5b074889a175e145b608e115c80bec73.gif

KEEP THE SKY CLEAR

-六月,春去夏来-

直播内容:.NET Core中的依赖注入容器DI

直播时间:今日14:30

主讲人:常老师

扫码进入直播↓

4c1d5d0488883e715739d7b11db4e09b.png

dccbfb9c6c264ae5bb353304f6c3fc3f.png

ded145c6c1bd5d0a36a59198be821d28.png

往期经典回顾

86c54422dd38a739a1b4dffc204a1f82.gif

 上位机开发之西门子PLC-S7通信实践

86c54422dd38a739a1b4dffc204a1f82.gif

 上位机开发之三菱FX3U以太网通信实践

86c54422dd38a739a1b4dffc204a1f82.gif

 OPCUA+MQTT构建物联网通用框架

86c54422dd38a739a1b4dffc204a1f82.gif

 C#与西门子PLC通讯

86c54422dd38a739a1b4dffc204a1f82.gif

 VS2012 MFC编程之USB-CAN II通讯上位机

86c54422dd38a739a1b4dffc204a1f82.gif

用GDI+实现CAD交互绘图(一)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值