当前位置: 首页 > 工具软件 > G-Graphics > 使用案例 >

【一些笔记】【图形库】C++ - EGE - Graphics.h库的函数手册【部分使用说明】

裴泰平
2023-12-01

Easy Graphics Engine

[by_041]

安装

  • 下载文件(CSDN积分下载

  • 把压缩包中include文件夹中的ege.hgraphics.h库和ege文件夹丢到编译器对应的include文件夹中

  • 在编译时写入的命令应该如下(也就是在连接器中加入命令-lgraphics64 -luuid -lmsimg32 -lgdi32 -limm32 -lole32 -loleaut32

    g++-Wall "$file_name" -o "${file_base_name}.exe" -lgraphics64 -luuid -lmsimg32 -lgdi32 -limm32 -lole32 -loleaut32
    
  • 测试编译运行下面的代码文件

    #include "graphics.h"
    int main()
    {
        initgraph(640, 480);
        circle(200, 200, 100);
        getch();
        cleardevice();
        getch();
        closegraph();
        return 0;
    }
    

入门基础示例和教程

库函数目录

绘图环境相关函数

函数或数据参数返回值说明笔记
cleardevicePIMAGE pimg = NULL-清除屏幕
clearviewportPIMAGE pimg = NULL-清空视图
closegraph--关闭图形环境
gettarget-PIMAGE对象获取当前绘图对象
getviewportint *pleft,
int *ptop,
int *pright,
int *pbottom,
int *pclip = NULL,
PIMAGE pimg = NULL
-获取当前视图信息
initgraphint Width,
int Height,
int Flag = INIT_DEFAULT
-初始化绘图环境推荐第三个参数为:
INIT_RENDERMANUAL | INIT_NOFORCEEXIT
is_run--判断窗口环境是否还存在一般用在while(true)
原本true的位置
setactivepage设置当前绘图页
setcaption设置窗口标题
setinitmode设置初始化参数
setrendermode设置窗口更新模式
settarget设置当前绘图对象
setviewport设置当前视图
setvisualpage设置显示页,把页面内容输出到窗口的页
window_getviewport获取当前窗口可见部分
window_setviewport设置窗口可见部分

颜色表示及相关函数

函数或数据参数返回值说明
颜色表示1--介绍颜色表示方法(详见文档中)
getbkcolor获取当前绘图背景色
EGEGET_B返回指定颜色中的蓝色值
getcolor获取当前绘图前景色
getfillcolor获取当前绘图填充色
EGEGET_G返回指定颜色中的绿色值
EGEGET_R返回指定颜色中的红色值
hsl2rgb转换 HSL 颜色为 RGB 颜色
hsv2rgb转换 HSV 颜色为 RGB 颜色
EGERGB通过红、绿、蓝颜色分量合成颜色
rgb2gray转换 RGB 颜色为 灰度颜色
rgb2hsl转换 RGB 颜色为 HSL 颜色
hsv2rgb转换 RGB 颜色为 HSV 颜色
setbkcolor设置当前绘图背景色
setbkcolor_f设置清屏时所用的背景色
setbkmode设置输出文字时的背景模式
setcolorcolor_t color,
PIMAGE pimg = NULL
设置当前绘图前景色
setfillcolorcolor_t color,
PIMAGE pimg = NULL
设置当前绘图填充色
setfontbkcolor设置当前文字背景色

特殊说明:这里部分函数的最后一个参数为一个PIMAGE的参数,是一个可选参数,如果不填,则绘画到当前页。如果填上,则设置或者绘画到指定的IMAGE。

绘制图形相关函数

函数或数据参数返回值说明
arc(f)int(float) x,
int(float) y,
int(float) stangle, // 起始角度
int(float) endangle, // 终止角度
int(float) radius,
PIMAGE pimg = NULL
画圆弧
barint left,
int top,
int right,
int bottom,
PIMAGE pimg = NULL
-画无边框填充矩形
bar3dint left,
int top,
int right,
int bottom,
int depth,
bool topflag, // 画三维顶部否
PIMAGE pimg = NULL
-画有边框三维填充矩形
circle画圆
drawbezier画bezier曲线
drawlines画多条不连续线段
drawpolyint numliness,
const int *polypoints,
PIMAGE pimg = NULL
-画多边形
ellipse画椭圆弧线
fillellipse画填充的椭圆
fillpolyint numpoints,
const int *polypoints,
PIMAGE pimg = NULL
-画填充的多边形,第i个点坐标为 ( p 2 i , p 2 i + 1 ) (p_{2i},p_{2i+1}) (p2i,p2i+1)
floodfillint x,
int y,
int border, // 边界颜色?也就设为0且(x,y)在有颜色的地方还行
PIMAGE pimg = NULL
-指定边界色填充区域
floodfillsurface指定区域色填充区域
getfillcolor获取当前填充颜色
getfillstyle获取当前填充类型(暂不支持)
getheight获取绘图区的高度
getlinestyle获取当前线形
getpixelint x,
int y
PIMAGE pimg = NULL
color_t获取像素点的颜色
getwidthPIMAGE pimg = NULLint获取绘图区的宽度
getxPIMAGE pimg = NULLint获取当前 x 坐标
getyPIMAGE pimg = NULLint获取当前 y 坐标
line画线
linerelint dx,
int dy,
PIMAGE pimg = NULL
画线
linetoint x,
int y,
PIMAGE pimg = NULL
画线
moverelint dx,
int dy,
PIMAGE pimg = NULL
移动当前点(相对坐标)
movetoint x,
int y,
PIMAGE pimg = NULL
移动当前点(绝对坐标)
pieslice画填充圆扇形
putpixelint x,
int y,
color_t color,
PIMAGE pimg = NULL
-画像素点
putpixels画多个像素点
rectangle画空心矩形
sector画填充椭圆扇形
setfillcolorcolor_t color,
PIMAGE pimg = NULL
-设置当前填充颜色
setfillstyle设置当前填充类型(过时函数)
setlinestyle设置当前线形
setlinewidthint thickness,
PIMAGE pimg = NULL
-设置当前线宽
setwritemode设置绘图位操作模式

特殊说明:

  1. 以下所有函数的坐标模式为,如果以有向线段表示的量,起点能取到,终点取不到。比如line函数,起点x1,y1能画上点,终点x2,y2不会画上点,请注意。类似的有lineto, linerel, bar, bar3d, rectangle, ellipse, sector,函数说明内也会对本段进行补充。
  2. 另外,这里每一个函数的最后一个参数均为一个PIMAGE的指针,是一个可选参数,如果不填,则绘画到当前页。如果填上,则绘画到指定的IMAGE。
  3. 关于效率,如果使用手动更新模式(setrendermode),那以上所有函数的执行速度都会得到提升。

其它说明:对于多数函数,另有高速版的xxx_f函数,参数一样,作用一样,但不进行相对坐标变换和边界检查(如果越界绘图,要么画错地方,要么程序结果莫名其妙,甚至直接崩溃),并且必须在窗口锁定绘图模式下才能使用,否则将发生不可预知的结果。

文字输出相关函数

函数或数据参数返回值说明
getfont获取当前字体样式
LOGFONT 结构体保存字体样式的结构体
outtext在当前位置输出字符串
outtextrect在指定矩形区域内输出字符串
outtextxy在指定位置输出字符串
rectprintf在指定矩形格式化输出字符串
setfontint nHeight,
int nWidth,
LPCSTR lpszFace,
PIMAGE pimg = NULL
-设置当前字体样式
内含参数列表
settextjustify设置当前文字对齐方式
textheight获取字符串的高
textwidth获取字符串的宽
xyprintfint x,
int y,
LPCSTR textstring,
-在指定位置格式化输出字符串

图像处理相关函数

函数或数据参数返回值说明实例
getimage从屏幕 / 文件 / 资源 / IMAGE 对象中获取图像
PIMAGE 对象保存图像的对象
imagefilter_blurringPIMAGE imgdest, // 操作的图片,NULL当前图片
int intensity, // 模糊度(扩散,0x80+算量大一倍)
int alpha, // 图像亮度(消减,0x100)
// 描述要进行此操作的矩形区域,默认全图
int nXOriginDest = 0,
int nYOriginDest = 0,
int nWidthDest = 0,
int nHeightDest = 0
int
(成功0)
对指定图像进行图像模糊滤镜操作
putimage在屏幕上绘制指定图像
putimage_alphablend在屏幕上以半透明方式绘制指定图像
putimage_transparent在屏幕上以透明方式绘制指定图像
putimage_alphatransparent在屏幕上以透明/半透明方式绘制指定图像
三元光栅操作码介绍三元光栅操作码

键盘鼠标输入函数

函数或数据参数返回值说明
FlushMouseMsgBuffer--清空鼠标消息缓冲区(过时函数)
getch-int获取一个键盘字符输入。如果当前没有输入的字符就一直等待
getkey-key_msg获取一个键盘消息。如果当前没有键盘消息就一直等待
getmouse-mouse_msg获取一个鼠标消息。如果当前鼠标消息队列中没有,就一直等待
GetMouseMsg-MOUSEMSG(过时函数)获取一个鼠标消息。如果当前鼠标消息队列中没有,就一直等待
kbhit-int(0/1)检测当前是否有键盘字符输入,一般与getch搭配使用
kbmsg-int(0/1)检测当前是否有键盘消息,一般与getkey搭配使用
key_msg 结构体UINT msg;
UINT key;
UINT flags;
-保存键盘消息的结构体
下面要加个结构表
keystateint keyint(0/1)判断某按键是否按下
mousemsg-int(0/1)检测当前是否有鼠标消息
mouse_msg 结构体保存鼠标消息的结构体
MOUSEMSG 结构体(不建议使用)保存鼠标消息的结构体
mouseposint *x,
int *y
int(0)获取当前鼠标位置
showmouseint bShowint(0/非0)设置鼠标显示状态

时间函数

函数或数据参数返回值说明笔记
api_sleeplong dwMilliseconds-实际调用API中的Sleep,因直接调用Sleep会被转化为调用delay
delaylong Milliseconds-至少延迟以毫秒为单位的时间
delay_mslong Milliseconds-平均延迟以毫秒为单位的时间
delay_fpslong(double) fps-延迟以FPS为准的时间,以实现稳定帧率延迟平均1000/fps毫秒
常写在for的步进位
delay_jfpslong(double) fps-延迟以FPS为准的时间,以实现稳定帧率(带跳帧)和上一个区别在即使跳帧仍会更新
fclock获取当前程序从初始化起经过的时间,以秒为单位

数学函数

随机函数

其它函数

函数或数据参数返回值说明
getfpsint flag = 1(0渲染/1逻辑/1-0=无效)float帧数,获取当前窗口刷新率(FPS = Frame Per Second)
❗需要调用delay族函数
GetHWnd获取当前窗口句柄
inputbox_getline使用对话框让用户输入一个字符串

补充内容

    1. 用 16 进制的颜色表示,形式为:
      0xrrggbb (rr=红,gg=绿,bb=蓝)
    2. 用预定义颜色,如下:
    常量值颜色值常量值颜色
    BLACK0DARKGRAY0x545454深灰
    BLUE0x0000A8LIGHTBLUE0x5454FC亮蓝
    GREEN0x00A800绿LIGHTGREEN0x54FC54亮绿
    CYAN0x00A8A8LIGHTCYAN0x54FCFC亮青
    RED0xA80000LIGHTRED0xFC5454亮红
    MAGENTA0xA800A8LIGHTMAGENTA0xFC54FC亮紫
    BROWN0xA8A800YELLOW0xFCFC54
    LIGHTGRAY0xA8A8A8浅灰WHITE0xFCFCFC
    1. 用 EGERGB 宏合成颜色。详见 EGERGB。

    2. 用 hsl2rgb、hsv2rgb 转换其他色彩模型到 RGB 颜色。详见 hsl2rgb、hsv2rgb。

      示例:
      以下是部分设置前景色的方法:
      setcolor(0xff0000);
      setcolor(BLUE);
      setcolor(EGERGB(0, 0, 255));
      setcolor(hsl2rgb(240, 1, 0.5));


  1. 补充如下 ↩︎

 类似资料: