硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2351|回复: 5
收起左侧

[emWin] emwin多窗口同时画曲线问题

[复制链接]
回帖奖励 1 个金币 回复本帖可获得 1 个金币奖励! 每人限 1 次(中奖概率 50%)

1

主题

4

回帖

1

积分

新手上路

积分
1
发表于 2017-10-11 21:29:22 | 显示全部楼层 |阅读模式
emwin建立2个窗口,希望实时显示采集到的数据曲线。
在2个窗口的回调函数的WM_PAINT中有每次添加一个点的代码,在主程序中,当有数据更新时,用WM_INVALIDATERECT函数使相应的窗口无效。
现在的问题是,2条曲线同时绘制时会出现曲线前面的点被覆盖的情况。如果指绘制一条曲线就正常。
还请高手帮助。
小弟万分感激!!!

单线绘制

单线绘制


单线绘制(OK)

双线同时绘制1

双线同时绘制1

双线同时绘制2

双线同时绘制2

双线同时绘制3

双线同时绘制3


双线绘制(曲线不连续)
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107628
QQ
发表于 2017-10-12 01:58:42 | 显示全部楼层
你现在的曲线是怎么绘制的,方便的话,贴下曲线的绘制函数。
回复

使用道具 举报

1

主题

4

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2017-10-12 20:02:46 | 显示全部楼层

回 eric2013 的帖子

eric2013:你现在的曲线是怎么绘制的,方便的话,贴下曲线的绘制函数。 (2017-10-12 01:58) 
//
//       _cbWindow_Main_Graph1_Curve
//
static void _cbWindow_Main_Graph1_Curve(WM_MESSAGE * pMsg) {
    switch (pMsg->MsgId) {
    case WM_PAINT:
        if (G1_DrawFlag)//绘点标记
        {
            if (G1_LastX == -1)//初始化点
            {
                G1_LastX = 0;
                G1_LastY = G1_Curve_SizeY - G1_Value;
                GUI_SetPenSize(G_PenSize);
                GUI_SetColor(G1_Color);
                GUI_DrawPoint(G1_LastX, G1_LastY);
            }
            else
            if (G1_LastX == G1_Point*G1_dx)//边上的点
            {
                G1_LastX = 0;
                G1_LastY = G1_Curve_SizeY - G1_Value;
                GUI_SetPenSize(G_PenSize);
                GUI_SetColor(G1_Color);
                GUI_DrawPoint(G1_LastX, G1_LastY);
            }
            else
            {
                GUI_SetPenSize(G_PenSize);
                GUI_SetColor(G1_Color);
                GUI_DrawLine(G1_LastX, G1_LastY, G1_LastX + G1_dx, G1_Curve_SizeY - G1_Value);
                G1_LastX = G1_LastX + G1_dx;
                G1_LastY = G1_Curve_SizeY - G1_Value;
            }
            G1_DrawFlag = 0;
        }
        break;
    default:
        WM_DefaultProc(pMsg);
    }
}
回复

使用道具 举报

1

主题

4

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2017-10-12 20:05:13 | 显示全部楼层

回 eric2013 的帖子

eric2013:你现在的曲线是怎么绘制的,方便的话,贴下曲线的绘制函数。 (2017-10-12 01:58) 
主程序中设置绘图标记
同时用invalidate函数设置重绘的矩形区
回复

使用道具 举报

6

主题

231

回帖

249

积分

高级会员

积分
249
发表于 2017-10-12 21:51:37 | 显示全部楼层
叫别人帮忙却连贴个代码都贴不完,别人不会愿意花时间帮你踩谜语的,除了硬汉那么有耐心。
回复

使用道具 举报

1

主题

4

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2017-10-13 09:02:01 | 显示全部楼层

回 novice 的帖子

novice:叫别人帮忙却连贴个代码都贴不完,别人不会愿意花时间帮你踩谜语的,除了硬汉那么有耐心。 (2017-10-12 21:51) 
不好意思,新手一个,已贴上绘制代码。谢谢提醒。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-8 19:47 , Processed in 0.318659 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表