首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MikroC,绘制折线图

MikroC,绘制折线图
EN

Stack Overflow用户
提问于 2013-08-10 16:05:57
回答 1查看 333关注 0票数 0

我正在尝试创建一个函数,它将在GLCD屏幕上的特定窗口内绘制线形图。

假设窗口的x轴从像素24到205 (从左到右),y轴从像素55到5(从低到高)。

每当有新数据可用时,我只需要该图添加一个新值(或点)。因此,我可以在数据收集例程中调用图形刷新。这没问题。

最新的值总是需要添加到图中最右边的位置,即205。所以我需要清除这条线,然后画一个新的值/点。也没问题。

代码语言:javascript
复制
T6963C_line(205, 5, 205, 55, T6963C_BLACK); //Clearing the whole line
T6963C_dot(205, posy, T6963C_WHITE);        //Drawing new dot

但我不确定的是,如何在刷新时将所有先前的值/点向左移位(每次在x位置205上添加新的值/点),直到它到达窗口的边界,即22。

任何帮助都是非常有价值的!

添加:

代码语言:javascript
复制
int posy1[181];
int i1;

 for(i1 = 0; i1 < 181 - 1; i1++)
 {
     T6963C_dot(i1 + 24, posy1[i1], T6963C_BLACK); //Erase old dots
 }
 for(i1 = 0; i1 < 181 - 1; i1++)
 {
     posy1[i1] = posy1[i1 + 1]; //Shift array
 }
 posy1[181] = EQ; //Add new value (EQ) to array
 for(i1 = 0; i1 < 181 - 1; i1++)
 {
     T6963C_dot(i1 + 24, posy1[i1], T6963C_WHITE); //Redraw dots
 }
EN

回答 1

Stack Overflow用户

发布于 2013-08-10 19:30:32

创建一个数据宽度的数组,并将y值存储在其中。然后,在添加新值时,擦除前面的点,将数组中的值向下移动一个位置,然后重新绘制它们。最后,将新点的y位置添加到数组的末尾。

这是大体上的想法;有很多可能的优化。要擦除已知y位置上的一个点,您不必绘制一条垂直线--在其上绘制一个黑点就足够了。此外,您不必物理地将每个plot[x+1]复制到plot[x] --您可以保持数组不变,只需更新偏移量指数模数数据宽度。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18159956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档