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

19 篇文章 0 订阅
3 篇文章 0 订阅

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

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

ege库在codeblock中配置

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

	https://xege.org

当前最新版本为:

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

推荐使用。

关于 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)   画矩形和填充矩形

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

(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);

(5)获取图像文件:

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

项目实例

在本项目实例中,我们实现一个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<length-1;i++)   //循环输出数据,描点实现绘图
	    {
	        StartX=Zero_X+i;		
	        lsdat = (buff[i];
	        StartY = lsdat/rad;       
	
	        EndX=Zero_X+i+1;	     
	        EndY =(buff[i+1];      
	
	        ege_line(StartX,Zero_Y-StartY,EndX,Zero_Y-EndY);
	
	    }
		getch();		
		closegraph();
		return 0;
	}

运行后,输出图形如下:

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

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cyjbj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值