C++图形函数库使用说明.docx

上传人:b****6 文档编号:8425961 上传时间:2023-01-31 格式:DOCX 页数:11 大小:25.87KB
下载 相关 举报
C++图形函数库使用说明.docx_第1页
第1页 / 共11页
C++图形函数库使用说明.docx_第2页
第2页 / 共11页
C++图形函数库使用说明.docx_第3页
第3页 / 共11页
C++图形函数库使用说明.docx_第4页
第4页 / 共11页
C++图形函数库使用说明.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

C++图形函数库使用说明.docx

《C++图形函数库使用说明.docx》由会员分享,可在线阅读,更多相关《C++图形函数库使用说明.docx(11页珍藏版)》请在冰豆网上搜索。

C++图形函数库使用说明.docx

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)。

 

(未完待续)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1