C++图形函数库使用说明.docx
- 文档编号:8425961
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:11
- 大小:25.87KB
C++图形函数库使用说明.docx
《C++图形函数库使用说明.docx》由会员分享,可在线阅读,更多相关《C++图形函数库使用说明.docx(11页珍藏版)》请在冰豆网上搜索。
C++图形函数库使用说明
《LLH-GraphicsC++图形函数库》使用说明
1前言
博大精深而又高度灵活的C++语言的对于程序设计的初学者来说是一座难以翻越的高山。
不仅如此,他们还要在很长一段时间内忍受让人厌恶的控制台(Console)界面,“黑底白字、每行80个字符、HelloWorld、1234……”。
而同样流行的Java或者C#,只用不超过10行代码就可以生成一个漂亮的GUI窗口。
在窗口区画条线或者画个圆更是易如反掌。
虽然己经有很多优秀的C++图形开发包(函数库、类库或者软件框架的形式)可以完成同样的任务,但是对于初学者仍然难以掌握。
其原因有二:
(1)这些图形开发包不是与C++语言本身绑定在一起的,或者说没有被写进C++的标准里,所以许多经典的C++教科书都不讲,因而难以普及,初学者也不知道该选择哪个好。
相比较而言,Java和C#都有贵族出身,前者属于Sun后者属于Microsoft。
它们的语法、编译器和开发包都是由同一家设计的,自然被绑定在了一起。
它们的教科书在讲解语法的同时自然也会介绍开发包。
(2)要学会使用这些C++图形开发包一般必须掌握“面向对象”、“事件驱动”等概念,甚至要忍受程序的入口点都找不着的情况。
(main函数不见了!
)这些都会使初学者的望而却步。
如果初学者过早的开始学习MFC的话会感受到一个巨大的断层。
国内的现实是在学习C++的初级阶段主要在学C,至少我们学校是这样。
因而初学者要花很长时间由“面向过程”过渡到“面向对象”。
有一些专家提出学习C++时应直接学习“面向对象”,但本人认为花一部分精力在“C式的C++”上还是值得的。
因为在国内有很多程序员在用编写嵌入式系统中的程序,而用的最多的就是C语言。
编写此图形函数库的目的是为C++初学者提供一个“玩具”和“学步车”,让他们能够早一点儿享受到编程的快乐。
编写一个图形方式的而且带声音的游戏比单纯编写一个“冒泡排序”有意思多了,成就感也会“相当的高”。
兴趣是最好的老师。
希望各位同学能够通过本学期C++课程的学习真正对编程产生兴趣,真正感受到编程的快乐。
本人不保留此函数库的任何版权,源代码都是开放的。
您爱怎么用就怎么用,大卸八块都行。
如果被您发掘出了商业用途,本人更是感到由衷的高兴!
另外虽然本人自信在CS方面的“内功”已颇具实力,但外功确实不行。
所以希望各位的传播范围不要太广,万一哪天被哪位“编程高手”看见了,肯定会贻笑大方的。
这是本人的“心痒之作”,加上本人懒散的性格,和繁多的日常杂务,所以函数库有许多功能尚未完善,比如关于文本字体、鼠标和声音、音乐的支持尚未加上。
另外还可以将其改造为类库的形式,以用于学习“面向对象”的编程思想。
希望具有一定功力和热情的同学能够充当志愿者帮我完成它。
有什么问题或者发现了Bug或者愿意充当志愿者可以直接给我发邮件。
2使用说明
(1)此函数库目前只能在VC6环境下使用。
(2)将“graphics.zip”文件复制一份作为备份。
(3)将“graphics.zip”文件解压缩至任一子目录下(比如graphics子目录)。
将当前目录切换到此子目录下,双击其中的“GuiFramework.dsw”文件,整个工程被打开。
(4)在此工程当中创建你自己的C++源程序,方法是:
点击菜单“Project-->AddToProject-->New…”。
现假定C++源程序的名字为“main.cpp”。
(5)在main.cpp中就可以编写你自己的程序了。
程序的总入口点仍然是main函数。
额外的要求是必须加入如下三句程序:
#include"stdafx.h"
#include"llhgraphics.h"
usingnamespacellh;
(6)现在在main.cpp就可以随便使用函数库中的函数了。
下面是一个main.cpp的例子。
其效果是在屏幕上画个红色的圆圈,并在圆中央显示Helloworld!
信息。
#include"stdafx.h"
#include"llhgraphics.h"
usingnamespacellh;
intmain()
{
SetPen(RGB(255,0,0),3);
Ellipse(100,100,400,400);
Output(210,240,"HelloWorld!
");
return0;
}
(7)现在就可以编译运行了。
看到红色的圆圈没有?
(8)C++标准函数库中的函数仍然能够正常使用,方法是包含相应的头文件和加入正确的命名空间声明。
但是:
cout和cin已经不能再用了,因为再也没有黑乎乎的控制台界面了。
(9)程序如果比较大,还可以在工程中加入多个.cpp文件和.h文件,方法仍然是点击菜单:
“Project-->AddToProject-->New…”。
(10)工程中其它文件都是做幕后工作的,如果你不懂最好别乱改。
3各个函数的详细说明
(1)库中所有图形相关函数所使用的坐标系如下所示:
(2)库中所有图形相关函数在设置颜色是使用了宏函数RGB(a,b,c)。
其中a、b、c是三个unsignedchar型的数,分别设置红色分量、绿色分量和蓝色分量。
宏函数RGB会将a、b、c合成一个COLORREF型的数。
(3)
函数
voidSetPen(COLORREFcrColor,intnWidth=1,intfnPenStyle=PS_SOLID);
功能
设置默认图形画笔的颜色、线条宽度、和风格。
各种图形(比如圆或者矩形等)的轮廓线都是由画笔决定的。
参数
crColor:
设置颜色,比如设为RGB(0,255,0),则画笔呈绿色。
nWidth:
设置画笔的宽度。
以像素为单位,默认值是1。
fnPenStyle:
设置画笔风格。
常量PS_SOLID表示实线。
还可以设为常量PS_DASH、PS_DOT、PS_DASHDOT、PS_DASHDOTDOT、PS_NULL、PS_INSIDEFRAME。
具体会产生什么效果你还是自己试吧。
返回值
无
(4)
函数
voidSetBrush(COLORREFcrColor);
功能
设置默认图形画刷的颜色。
各种图形(比如圆或者矩形等)内部所填充的颜色是由画刷决定的。
参数
crColor:
设置颜色,比如设为RGB(0,0,255),则画刷呈蓝色。
返回值
无
(5)
函数
voidLine(intx1,inty1,intx2,inty2);
功能
画一条直线。
线条的颜色、宽度和风格当然决定于默认画笔了。
参数
x1,y1表示起始点坐标,x2,y2表示终止点坐标。
返回值
无
(6)
函数
voidEllipse(intx1,inty1,intx2,inty2);
功能
画一个椭圆或圆。
参数
x1,y1表示椭圆外切矩形的左上角坐标,x2,y2表示矩形的右下角坐标。
如果将矩形设成正方形则自然成圆了。
返回值
无
(7)
函数
voidRectangle(intx1,inty1,intx2,inty2);
功能
画一个矩形。
参数
x1,y1表示矩形的左上角坐标,x2,y2表示矩形的右下角坐标。
返回值
无
(8)
函数
voidClearRect(intx1,inty1,intx2,inty2,COLORREFcrColor=RGB(255,255,0));
功能
将指定的矩形区清理成指定颜色。
这个区域的已有图形都被擦掉了。
参数
x1,y1表示矩形的左上角坐标,x2,y2表示矩形的右下角坐标。
crColor表示擦除时所用的颜色。
返回值
无
(9)
函数
charGetChar(unsignedintiMilliseconds=INFINITE);
功能
获得用户键盘输入键的ASCII编码。
参数
iMilliseconds表示等待时间(以毫秒为单位)。
如果在iMilliseconds指定的时间段内用户没有敲击键盘的任何键,则函数自动返回。
如果iMilliseconds设成常量INFINITE,则函数将会无限的等待下去,直到用户有键盘输入动作为止。
返回值
如果用户有键盘输入动作使函数返回,则返回值为输入键的ASCII编码。
如果用户没有键盘输入动作而函数超时返回,则返回值为0。
(10)
函数
intGetKeyCode(unsignedintiMilliseconds=INFINITE);
功能
获得用户键盘输入键的扫描码。
注意扫描码不同于ASCII编码。
键盘上的键并非都具有ASCII编码,但都具有唯一的扫描码。
比如上、下、左、右四个方向键的扫描码分别为:
72、80、75、77。
因此本函数可以用于输入键盘上的任何键。
参数
iMilliseconds表示等待时间(以毫秒为单位)。
如果在iMilliseconds指定的时间段内用户没有敲击键盘的任何键,则函数自动返回。
如果iMilliseconds设成常量INFINITE,则函数将会无限的等待下去,直到用户有键盘输入动作为止。
返回值
如果用户有键盘输入动作使函数返回,则返回值为输入键的扫描码。
如果用户没有键盘输入动作而函数超时返回,则返回值为0。
至于键盘上101个键的扫描码具体是多少你可以编个程序试出来。
(11)
函数
voidSleep(intdwMilliseconds);
功能
使程序暂停dwMilliseconds个毫秒。
dwMilliseconds个毫秒过后,函数才返回。
参数
dwMilliseconds表示暂停时间(以毫秒为单位)。
返回值
无
(12)
函数
voidOutput(intx,inty,charch);
功能
在指定的坐标点上输出一个字符。
参数
x,y表示指定位置的坐标。
ch表示要输出的字符。
返回值
无
(13)
函数
voidOutput(intx,inty,intivalue);
功能
在指定的坐标点上输出一个整数。
参数
x,y表示指定位置的坐标。
ivalue表示要输出的整数。
返回值
无
(14)
函数
voidOutput(intx,inty,constchar*str);
功能
在指定的坐标点上输出一个字符串。
参数
x,y表示指定位置的坐标。
str表示要输出的字符串。
返回值
无
(15)
函数
voidInput(intx,inty,int&ch);
功能
在指定的坐标点上输入一个字符。
参数
x,y表示指定位置的坐标。
ch表示接收输入值的字符型变量。
返回值
无
(16)
函数
voidInput(intx,inty,int&rInt);
功能
在指定的坐标点上输入一个整数。
参数
x,y表示指定位置的坐标。
rInt表示接收输入值的整型变量。
返回值
无
(17)
函数
voidInput(intx,inty,char*str);
功能
在指定的坐标点上输入一个字符串。
参数
x,y表示指定位置的坐标。
str表示接收输入的一维字符数组。
返回值
无
(18)
函数
voidAngleArc(intx,inty,intdwRadius,floateStartAngle,floateSweepAngle);
功能
画一段圆弧
参数
x,y表示圆心的坐标。
dwRadius表示圆的半径的长度。
eStartAngle表示圆弧的起始角度(从x轴出发),取值范围为0~360度。
eSweepAngle表示圆弧所跨过的角度,取值范围为0~360度。
返回值
无
(19)
函数
voidPolyline(constPOINT*lpPointArray,intcPoints);
功能
画一条连结多个顶点的折线。
参数
lpPointArray表示顶点数组
cPoints表示顶点数目
顶点数组中的每一个元素是一个POINT型的变量,表示一个顶点。
POINT的定义为:
typedefstructtagPOINT{
intx;//x坐标
inty;//y坐标
}POINT;
返回值
无
(20)
函数
voidPolygon(constPOINT*lpPointArray,intcPoints);
功能
画一个具有多个顶点的任意多边形。
顶点间用直线相连,这些线段的颜色和宽度决定于当前默认画笔的设置,多边形内部用默认画刷指定的颜色填充。
参数
lpPointArray表示顶点数组
cPoints表示顶点数目,必须大于2。
顶点数组中的每一个元素是一个POINT型的变量,表示一个顶点。
POINT的定义为:
typedefstructtagPOINT{
intx;//x坐标
inty;//y坐标
}POINT;
返回值
无
(21)
函数
voidArc(intnLeftRect,intnTopRect,intnRightRect,intnBottomRect,intnXStartArc,intnYStartArc,intnXEndArc,intnYEndArc,intarcDirection=AD_CLOCKWISE);
功能
画一段椭圆弧。
参数
(nLeftRect,nTopRect)表示椭圆外切矩形的左上角坐标;
(nRightRect,nBottomRect)表示椭圆外切矩形的右下角坐标;
由圆心出发向坐标点(nXStartArc,nYStartArc)做射线1,由圆心出发向坐标点(nXEndArc,nYEndArc)做射线2,两条射线必与椭圆相交于两点P1和P2。
两点之间的那一段椭圆弧就是我们要画的弧。
如果arcDirection等于AD_CLOCKWISE,则表示由P1出发顺时针走到P2;如果arcDirection等于AD_COUNTERCLOCKWISE,则表示由P1出发逆时针走到P2。
返回值
无
(22)
函数
voidPie(intnLeftRect,intnTopRect,intnRightRect,intnBottomRect,intnXRadial1,intnYRadial1,intnXRadial2,intnYRadial2,intarcDirection=AD_CLOCKWISE);
功能
画一个椭圆扇区。
参数
与Arc函数的参数意义相同。
最后得到是由点P1、P2所夹的圆弧和圆心所构成的扇区。
返回值
无
(23)。
。
。
(24)。
。
。
(25)。
。
。
(26)。
。
。
(未完待续)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 图形 函数库 使用说明