codeblock图形界面编程(六)基于ege库的进阶绘图
窗口管理
1、cleardevice(); //清除屏幕所有画图
2、setcaption(“string”); //设置窗口的标题,string为要显示的标题。
3、int getwidth(); //获取当前窗口的宽度
4、int getheight(); //获取当前窗口的高度
图形文件显示函数
EGE图形库中,有关图像显示的函数有:
(1) 普通绘图:
void putimage(
int dstX, // 绘制位置的 x 坐标
int dstY, // 绘制位置的 y 坐标
IMAGE *pSrcImg, // 要绘制的 IMAGE 对象指针
DWORD dwRop = SRCCOPY // 三元光栅操作码(详见备注)
);
缩放绘图:指定宽高和起始位置
void putimage(
int dstX, // 绘制位置的 x 坐标
int dstY, // 绘制位置的 y 坐标
int dstWidth, // 绘制的宽度
int dstHeight, // 绘制的高度
IMAGE *pSrcImg, // 要绘制的 IMAGE 对象指针
int srcX, // 绘制内容在 IMAGE 对象中的左上角 x 坐标
int srcY, // 绘制内容在 IMAGE 对象中的左上角 y 坐标
DWORD dwRop = SRCCOPY // 三元光栅操作码(详见备注)
);
(2)透明绘图
putimage_withalpha(NULL,img,x,y,0,0,w,h);
putimage_alphablend() 两张图片半透明混合
putimage_transparent()
putimage_alphatransparent()
(3)旋转绘图
putimage_rotate()
putimage_rotatezoom()
EGE中的表示图像对象的类为 IMAGE, 而PIMAGE 为 指向 IMAGE 对象的指针,即 IMAGE*, 定义如下:
typedef IMAGE* PIMAGE;
读取并显示图片
正常显示
实现代码如下:
PIMAGE img[5];
img=newimage();
getimage(img[0], "1.jpg");
putimage(0,0, img[0]);
运行显示效果如下:
透明显示
我们把putimage(0,0, img[0]);更换为:
putimage_alphablend(NULL, img[0], 0, 0, 0x50);
显示效果如下:
可见,图像已经明显变暗了。
旋转显示
这里我们用到了EGE库的putimage_rotate 函数,用于绘制旋转后的图像,
其 8 个参数分别为:
目标图像指针,若为 NULL,则是窗口。
绘制图像指针。
绘制图像左上角 x x x 坐标。
绘制图像左上角 y y y 坐标。
旋转中心在绘制图像坐标系的 x x x 坐标。
旋转中心在绘制图像坐标系的 y y y 坐标。
旋转角度(弧度),逆时针为正。
是否允许透明通道。
实现代码如下:
putimage_rotate(NULL, img[0], 0,200,0.0, 0,1, 0);
运行后,显示效果如下:
总结
EGE图形库具有简单,友好,容易上手,免费开源的特点,而且因为接口意义直观,即使是之前完全没有接触过图形编程的,也能迅速学会基本的绘图。并且支持拉伸贴图、图片旋转、透明半透明贴图和支持图像模糊滤镜操作,可以读取常见的流行的图片格式(bmp/jpg/png),也可以保存图片为bmp或png格式,不失为一款优秀的图形库。