• codeblock图形界面编程(五)基于ege库的数据采集波形绘图


    codeblock图形界面编程(五)基于ege库的绘图

    在嵌入式的项目开发中,数据检测、记录和分析往往是必要的功能,为了更加直观有效地展示数据,图形化的显示和分析往往事半功倍,另外,在分析故障情况是,往往需要区分问题原因,专业人员通过展示的图形,就可以区分是数据采集问题、还是数据分析算法问题,达到缩小范围,高效找到并解决问题的目的。

    ege库在codeblock中配置

    EGE, 全称 Easy Graphics Engine(简易图形引擎),是 windows 下的简易绘图库,是一个面向 C/C++ 语言的图形库,官网下载dz :

    	https://xege.org
    
    • 1

    当前最新版本为:

    	ege20.08_all(推荐, 支持vs2010-vs2019以及devcpp,codeblocks等)
    
    • 1

    推荐使用。

    关于 ege图形库在codeblock中的安装和配置,网上教程好多,不在赘述。在此只强调两点:

    1. 一定要正确配置ege头文件目录,目录名字中不要有中文。
    2. ege的lib文件夹中要选择正确的codeblock版本

    一定要和codeblock的版本一致,如下图:

    在这里插入图片描述

    ege库常用函数

    基础函数

     (1)初始化,创建窗口
    initgraph(Length_PicX, Length_PicY,INIT_RENDERMANUAL);	
    (2)设置绘画颜色
    setcolor(EGERGB(0xFF, 0x0, 0x0));
    (3)设置背景颜色
    setbkcolor(WHITE);
    (4)画圆
    circle(320, 240, 100);
    (5)画直线 
    ege_line(Zero_X, Zero_Y, Length_X,Length_Y);
    (6)结束绘图
    closegraph();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    进阶函数

    (1)   画矩形和填充矩形
    
    void EGEAPI ege_rectangle(float x, float y, float w, float h, PIMAGE pimg = NULL);
    void EGEAPI ege_fillrect(float x, float y, float w, float h, PIMAGE pimg = NULL);
    
    (2)画多边形和填充多边形
    
    void EGEAPI ege_drawpoly(int numpoints, ege_point* polypoints, PIMAGE pimg = NULL);
    void EGEAPI ege_fillpoly(int numpoints, ege_point* polypoints, PIMAGE pimg = NULL);
    
    (3)画椭圆和填充椭圆
    
    void EGEAPI ege_ellipse(float x, float y, float w, float h, PIMAGE pimg = NULL);
    void EGEAPI ege_fillellipse(float x, float y, float w, float h, PIMAGE pimg = NULL);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    (4) 画扇形和填充扇形

    void EGEAPI ege_pie(float x, float y, float w, float h, float stangle, float sweepAngle, PIMAGE pimg = NULL);
    void EGEAPI ege_fillpie(float x, float y, float w, float h, float stangle, float sweepAngle, PIMAGE pimg = NULL);
    
    • 1
    • 2

    (5)获取图像文件:

    PIMAGE getimage(pimg, "图片文件名(带扩展名)");
    该函数有多个重载,分别从不同的地方获取图像
    
    • 1
    • 2

    项目实例

    在本项目实例中,我们实现一个50hz数据采集波形的输出功能,程序实现如下:

    	int Drad_Pic_from_Datet(unsigned int *buff,int length,int rad)
    	{
    	    int i;		
    	    int StartX,StartY,EndX,EndY;		
    		initgraph(800, 600);
    		//设置绘画颜色为红色
    		setcolor(EGERGB(0xFF, 0x0, 0x0));
    		//设置背景颜色为白色
    		setbkcolor(WHITE);
    	
    		//直线 x坐标轴
    		ege_line(Zero_X, Zero_Y, Zero_X+Length_X, Zero_Y+0);
    		
    	
    		//直线 y坐标轴
    		ege_line(Zero_X, Zero_Y+Length_Y, Zero_X+0, Zero_Y-Length_Y);
    
    		for(i=0;i
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    运行后,输出图形如下:

    在这里插入图片描述当然,不同的采集数据决定了输出波形的形状,我们也可以对入口参数buff做工具填充,实现填充图形的显示功能。

  • 相关阅读:
    C语言初学者必学必会的C语言必背100代码
    Marvell/Cisco/Broadcom 三巨头的51.2T交换芯片
    Task-Driven Super Resolution: Object Detection in Low-resolution Images
    [架构之路-219]:工程师成长为优秀架构师的路径
    go语言牛客网专项训练-周结01
    python实现串口通信
    【2022最新核心面试资料 】最强Java面试八股文秋招offer召唤术!入职薪资53k
    HTTP1.0,HTTP1.1,持久连接,非持久连接,TCP,UDP,三次握手和四次挥手,HTTP与HTTPS,对称加密和非对称加密,状态码
    7.20 SpringBoot项目实战【图书详情-学生端】:图书信息 + 评论列表 + 是否收藏
    算法通关村第十五关青铜挑战——使用位存储 处理海量数据问题之用4KB内存寻找重复元素
  • 原文地址:https://blog.csdn.net/cyjbj/article/details/127410140