没有合适的资源?快使用搜索试试~ 我知道了~
首页VB6 GDI+入门教程(最新版)
VB6 GDI+入门教程(最新版)
5星 · 超过95%的资源 需积分: 48 226 下载量 80 浏览量
更新于2023-03-16
评论 9
收藏 813KB PDF 举报
GDI+是GDI的延生,应用于WinXP及更新版的Windows系统。相较于GDI它功能更加强大。现有的很多介绍GDI+的资料不少,但几乎都是基于.Net的,而介绍用VB6开发GDI+的资料却少之又少,偏偏又不少人需要用VB6来开发GDI+程序。所以这个资料不可多得。
资源详情
资源评论
资源推荐
http://vistaswx.blogbus.com
VB6 GDI+ 入门教程[1] GDI+介绍
引言:鉴于网上关于 GDI+的教程都是.Net 的,基本上没有 VB6.0 的,而这方面又很多人有
需要,所以我就写一个 Visual Basic 6 GDI+ 入门教程。
目标人群:所有能够较熟练使用 VB 的,对 GDI+感兴趣或有 GDI+编程需要的人。
1. What's GDI+
官方解释:GDI+是 Windows XP 中的一个子系统,它主要负责在显示屏幕和打印设备输出
有关信息,它是一组通过 C++类实现的应用程序编程接口。顾名思义,GDI+是以前版本 GDI
的继承者,出于兼容性考虑,Windows XP 仍然支持以前版本的 GDI,但是在开发新应用程
序的时候,开发人员为了满足图形输出需要应该使用 GDI+,因为 GDI+对以前的 Windows
版本中 GDI 进行了优化,并添加了许多新的功能。
作为图形设备接口的 GDI+使得应用程序开发人员在输出屏幕和打印机信息的时候无需考虑
具体显示设备的细节,他们只需调用 GDI+库输出的类的一些方法即可完成图形操作,真正
的绘图工作由这些方法交给特定的设备驱动程序来完成,GDI+使得图形硬件和应用程序相
互隔离,从而使开发人员编写设备无关的应用程序变得非常容易。
我的解释:GDI+其实就是一个绘图模块,用于在屏幕上输出各种需要的内容。
2. GDI+ DLL
GDI+的 Dll 在 Windows XP+中默认存在,如果 Windows XP 以下系统需要使用 GDI+,那么
需要从微软网站上下载安装包。
3. 使用 GDI+
GDI+在.net Framework 中默认集成,只要添加它的命名空间(System.Drawing.Drawing2D)
就能够使用了;而 GDI+在其它上面就没有那么容易了,例如 VB6 就需要添加 GDI+的 API。
对于初学者,写一堆 API 可能比学 GDI+用时还要长,不过我整理好了 API 到了一个模块,
使用时候呢 只要在 VB 里面加载一下就可以啦!
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
VB6 GDI+ 入门教程[2] GDI+初始化
现在先让我们了解下 GDI+的绘图机制。
1.初始化、关闭 GDI+
我们需要对 GDI+进行初始化,才能使用它的各种功能。如果没有初始化,那么 VB6 就会莫
名其妙的崩溃。呵呵。
当然程序结束了我们还要关闭 GDI+释放内存。
2.Graphics
Graphics 是 GDI+基础。首先我们需要一个图形对象 graphics(可以看作是画板),我们所有
的东西都要画在这个上面。那么如何显示呢?不要急,我们可以通过 GDI+内置函数从一个
对象的 DC(设备描述表)上创建 graphics。这样我们操作 graphics 的时候就会显示在对象
上。当然我们还可以从对象的 hwnd 中创建;在.net 中也可以从 gdi+的图像(image)中创建(直
接操作在图像上)。
3.绘图工具
有了画板,我们还要画笔、画刷才能画画 - -。画笔画刷呢,在 gdi+中就叫做 pen、brush。
画笔 pen 只能画一个轮廓(画线),而画刷可以对一个东西进行填充(刷子)。这个就是一个
基础 呵呵,很简单吧。
4.创建第一个 VB6 的 GDI+ 程序
首先,我们添加下 GDI+模块;然后我们需要对窗体(以后可以是其它容器)属性进行设置:
AutoRedraw=True,开启自动重绘;再把 ScaleMode 设置成 3(Pixel 像素),因为 GDI+基础单
位就是像素(当然可以用别的单位)
好,现在双击窗体,写入下面代码:
Option Explicit
Dim graphics As Long
Private Sub Form_Load()
InitGDIPlus
GdipCreateFromHDC Me.hDC, graphics
End Sub
Private Sub Form_Unload(Cancel As Integer)
GdipDeleteGraphics graphics '释放 graphics 占用的内存
TerminateGDIPlus
End Sub
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
OK,F5 运行。如果没有问题的话我们第一个最基础的 GDI+程序已经完成了。这个基本的
程序创建了一个 graphics 对象,当然什么还没有画呢。
通过这个程序,我们就大致了解 VB6 中 GDI+如何初始化、关闭了。首先呢要启动 GDI+,
然后要创建一个 graphics;关闭的时候也要做好扫地工作。
5.画线
线嘛,又不是填充,根据前面说的,我们需要一个 pen。那么如何创建 pen 呢?呵呵,下面
的代码就能创建一个 pen(追加在 Form_Load 过程中的末尾):
Dim pen As Long
GdipCreatePen1 &HFFFF0000, 1, UnitPixel, pen
这里已经新建了一个 pen。为什么是 GdipCreatePen1 而不是 GdipCreatePen2 什么的呢?你可
以在代码里面输入“mgdip.”这样就列出了所有的 GDI+函数。通过对象浏览器可以得知 pen2
是根据 brush 来创建 pen 的,现在不用。
&HFFFF0000:这里就是一个 16 进制的 ARGB (Alpha,Red,Green,Blue——透明,红色,绿色,
蓝色程度,255(&HFF)是完全,0(&H0)是完全不) 的数据。当然你可以输入 10 进制,只是
16 进制很方便,2 个位就是一段,如&HFFFF0000 就代表一个透明度是 255(不透明),颜
色是红色的一种颜色。如果你知道点绘图技巧就很容易用这个去写 呵呵~。同时我们还能看
到 gdi+过程是传址的,把 pen 传进去。为什么不用函数传出来呢?因为函数要传出一个标识,
错误标识。一般如果成功了那么就返回的是 0(Ok)。
好,现在已经拿到笔了,接下来就是用这个笔去画线了。通过查询可知有这么个 API:
GdipDrawLine,它的 X1Y1,X2Y2 是 single 型,继续找又发现 GdipDrawLineI,它的坐标值
都是 Long 型(我们一般用不到 single,因此我们一般用 GdipDrawLineI 就行了)。根据它的
参数名字 乱猜都能猜出来哪个参数代表什么了,于是我随便写了一句:GdipDrawLineI
graphics, pen, 10, 10, 200, 100。注意:你需要把 graphics 和 pen 传进去,否则怎么画呢?不
告诉它画在哪里~~,后面 4 个参数分别对应:起始点 X、起始点 Y、终点 X、终点 Y 的坐
标。当然扫地工作也要做好,删除 pen 的语句是 GdipDeletePen;参数很简单,传 pen 进去
即可。
综合起来,于是我们有了第一段真正绘制的 GDI+ VB6 程序,虽然它只画了一条线:
Option Explicit
Dim graphics As Long
Dim pen As Long
Private Sub Form_Load()
InitGDIPlus
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
GdipCreateFromHDC Me.hDC, graphics
GdipCreatePen1 &HFFFF0000, 1, UnitPixel, pen
GdipDrawLineI graphics, pen, 10, 10, 200, 100
End Sub
Private Sub Form_Unload(Cancel As Integer)
GdipDeletePen pen '删除这个笔(pen)
GdipDeleteGraphics graphics '释放 graphics 占用的内存
TerminateGDIPlus
End Sub
OK,F5 运行。红线没有出来?^_^……注意了 我们是在 Load 中绘制的。GDI+绘制与 VB
自己语句绘制一样。我们需要让他自动重绘(窗体的 AutoRedraw=True)或者放到 Paint 里
面:)
顺便说一下,如果你不是在 Load 事件中绘制的东西,并且 Form 的 AutoRedraw 是 True,那
么别忘记全部画完后 Refresh(例如 Me.Refresh)一下~!不然不会出现直到重绘时(例如曾被
挡住)。
终于……哈,一条红色的斜线出现了!
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
VB6 GDI+ 入门教程[3] 笔、刷子、矩形、椭圆绘制
好,我们已经学会如何画线了,那么后面的事情只要变通下都可以解决。不过变通前我还是
得说几个基本的东西。
1.绘制,填充一个矩形
绘制一个整型长度的矩形,我们要用到 GdipDrawRectangleI 和 GdipFillRectangleI。前者用
pen 画一个轮廓边框,后者用 brush 刷出一个填充区域。当然接下来就是如何创建刷子的问
题了。GDI+中有多种刷子,有纯色刷子(创建:GdipCreateSolidFill),有渐变刷子(创建:
GdipCreateLineBrush),还有纹理刷子,贴图刷子,路径刷子等等…………它们用于不同的
方面。
(1)绘制一个矩形边框
首先,我们需要一个 pen。
第一步,Dim!当然,我这样写了:Dim pen As Long;
第二步,创建一个红色的 pen(线的粗细是 1px):GdipCreatePen1 &HFFFF0000, 1, UnitPixel,
pen。
pen 创好了,接下来画矩形。这里我们用 GdipDrawRectangleI 来画矩形。画矩形跟画线可不
一样,虽然指定坐标的都是 4 个参数,但是矩形里面四个参数分别是:X,Y,长,宽。OK,综
合一下,代码如下:
Option Explicit
Dim graphics As Long
Dim pen As Long
Private Sub Form_Load()
InitGDIPlus
GdipCreateFromHDC Me.hDC, graphics
GdipCreatePen1 &HFFFF0000, 1, UnitPixel, pen
GdipDrawRectangleI graphics, pen, 30, 30, 100, 100
End Sub
Private Sub Form_Unload(Cancel As Integer)
GdipDeletePen pen
GdipDeleteGraphics graphics '释放 graphics 占用的内存
TerminateGDIPlus
End Sub
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
剩余49页未读,继续阅读
贝隆
- 粉丝: 532
- 资源: 233
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- ExcelVBA中的Range和Cells用法说明.pdf
- 基于单片机的电梯控制模型设计.doc
- 主成分分析和因子分析.pptx
- 共享笔记服务系统论文.doc
- 基于数据治理体系的数据中台实践分享.pptx
- 变压器的铭牌和额定值.pptx
- 计算机网络课程设计报告--用winsock设计Ping应用程序.doc
- 高电压技术课件:第03章 液体和固体介质的电气特性.pdf
- Oracle商务智能精华介绍.pptx
- 基于单片机的输液滴速控制系统设计文档.doc
- dw考试题 5套.pdf
- 学生档案管理系统详细设计说明书.doc
- 操作系统PPT课件.pptx
- 智慧路边停车管理系统方案.pptx
- 【企业内控系列】企业内部控制之人力资源管理控制(17页).doc
- 温度传感器分类与特点.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论24