• codeblock图形界面编程(六)基于ege库的进阶绘图


    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  // 三元光栅操作码(详见备注)
    	);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    缩放绘图:指定宽高和起始位置

    	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  // 三元光栅操作码(详见备注)
    	);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    (2)透明绘图

            putimage_withalpha(NULL,img,x,y,0,0,w,h); 
            putimage_alphablend() 两张图片半透明混合
            putimage_transparent()
            putimage_alphatransparent()
    
    • 1
    • 2
    • 3
    • 4

    (3)旋转绘图

            putimage_rotate()
            putimage_rotatezoom()
    
    • 1
    • 2

    EGE中的表示图像对象的类为 IMAGE, 而PIMAGE 为 指向 IMAGE 对象的指针,即 IMAGE*, 定义如下:

    	typedef IMAGE* PIMAGE;
    
    • 1

    读取并显示图片

    正常显示

    实现代码如下:

    	 PIMAGE img[5];
    	 img=newimage();
    	 getimage(img[0], "1.jpg");
    	 putimage(0,0, img[0]);
    
    • 1
    • 2
    • 3
    • 4

    运行显示效果如下:

    在这里插入图片描述

    透明显示

    我们把putimage(0,0, img[0]);更换为:

    putimage_alphablend(NULL, img[0], 0, 0, 0x50);
    
    • 1

    显示效果如下:

    在这里插入图片描述
    可见,图像已经明显变暗了。

    旋转显示

    这里我们用到了EGE库的putimage_rotate 函数,用于绘制旋转后的图像,
    其 8 个参数分别为:

    目标图像指针,若为 NULL,则是窗口。
    绘制图像指针。
    绘制图像左上角 x x x 坐标。
    绘制图像左上角 y y y 坐标。
    旋转中心在绘制图像坐标系的 x x x 坐标。
    旋转中心在绘制图像坐标系的 y y y 坐标。
    旋转角度(弧度),逆时针为正。
    是否允许透明通道。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    实现代码如下:

    	putimage_rotate(NULL, img[0], 0,200,0.0, 0,1, 0);
    
    • 1

    运行后,显示效果如下:

    在这里插入图片描述

    总结

    EGE图形库具有简单,友好,容易上手,免费开源的特点,而且因为接口意义直观,即使是之前完全没有接触过图形编程的,也能迅速学会基本的绘图。并且支持拉伸贴图、图片旋转、透明半透明贴图和支持图像模糊滤镜操作,可以读取常见的流行的图片格式(bmp/jpg/png),也可以保存图片为bmp或png格式,不失为一款优秀的图形库。

  • 相关阅读:
    AI Earth 构建一个简单的应用 python 使用streamlit库
    俄罗斯方块
    运算放大器典型应用(二)
    工程管理系统源码+项目说明+功能描述+前后端分离 + 二次开发
    【tg】4:NetworkManager :p2p、ice、消息收发
    数据分析之pandas(进阶)
    勤于奋国外LEAD最近一些常态
    postgresql 数据库 优化需要懂得几个参数
    前后端分离
    计组 | 【三 存储系统】强化阶段应用题与例题类型总结
  • 原文地址:https://blog.csdn.net/cyjbj/article/details/127419681