硬汉嵌入式论坛

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

[emWin] 2D与控件共用的问题

[复制链接]

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
发表于 2022-4-15 11:21:04 | 显示全部楼层 |阅读模式
使用emWin时,2D绘制与控件绘制能不能同时使用啊。比如说,使用GUI_CreateDialogBox()创建了一个WIN/FRAME页面后,想在这个页面内使用2D库如GUI_DrawLine绘制一些线条等。

emWin是不是不支持这种混用呀?总感觉纯控件或纯2D绘制总是有不能实现的功能。

回复

使用道具 举报

354

主题

2167

回帖

3234

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3234
发表于 2022-4-15 11:22:59 | 显示全部楼层
可以的。 比如Graphic里面有个api,可以自己再补充画图。  GRAPH_DATA_XY_SetOwnerDraw()
回复

使用道具 举报

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
 楼主| 发表于 2022-4-15 11:34:28 | 显示全部楼层
caicaptain2 发表于 2022-4-15 11:22
可以的。 比如Graphic里面有个api,可以自己再补充画图。  GRAPH_DATA_XY_SetOwnerDraw()

这个回调不知道怎么用呀。看例子展示的也是静态的,就是创建的时候绘制个固定的东西。
想要在程序运行时动态的绘制就没成功过。都不知道怎么触发这个回调函数运行
回复

使用道具 举报

354

主题

2167

回帖

3234

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3234
发表于 2022-4-15 13:43:45 | 显示全部楼层
本帖最后由 caicaptain2 于 2022-4-15 13:45 编辑
jplzl10000 发表于 2022-4-15 11:34
这个回调不知道怎么用呀。看例子展示的也是静态的,就是创建的时候绘制个固定的东西。
想要在程序运行时 ...

在窗口初始化的时候WM_INIT_DIALOG,设定自定义的绘图函数。
GRAPH_SetUserDraw(hItem, UserFacGraphDraw);

然后写这个函数
[C] 纯文本查看 复制代码
static void UserFacGraphDraw(WM_HWIN hWin, int Stage)
{
    switch (Stage)
    {
    case GRAPH_DRAW_FIRST:
        /* Draw for example a user defined grid...*/
        break;
    case GRAPH_DRAW_LAST:
            GUI_SetColor(GUI_WHITE); 
            if (UserData.CurveUnit==0)GUI_DispStringAt("秒",MAX_GRAPH_SIZE_X-50,MAX_GRAPH_SIZE_Y-30);
            else GUI_DispStringAt("分钟",MAX_GRAPH_SIZE_X-60,MAX_GRAPH_SIZE_Y-30);
            GUI_SetColor(GUI_GREEN); //2018-8-24
            GUI_DispStringAt("量程",5,20);
            GUI_SetColor(GUI_YELLOW); //2018-8-24
            GUI_DispStringAt("量程",MAX_GRAPH_SIZE_X-40,20); 
        break;
    }
}

这样子,可以在画面标注坐标轴的单位。 如果用GUI_Drawxxx什么的2D函数,也可以画格子,画线条。
回复

使用道具 举报

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
 楼主| 发表于 2022-4-15 13:49:29 | 显示全部楼层
caicaptain2 发表于 2022-4-15 13:43
在窗口初始化的时候WM_INIT_DIALOG,设定自定义的绘图函数。
GRAPH_SetUserDraw(hItem, UserFacGraphDra ...

如果要动态的添加绘制要怎么触发呢。比如,通过串口接收线段的坐标用来在屏上绘制线段。
是需要向哪个页面发送消息来触发这个回调函数吗?
回复

使用道具 举报

354

主题

2167

回帖

3234

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3234
发表于 2022-4-15 14:26:56 | 显示全部楼层
jplzl10000 发表于 2022-4-15 13:49
如果要动态的添加绘制要怎么触发呢。比如,通过串口接收线段的坐标用来在屏上绘制线段。
是需要向哪个页 ...

正常画曲线,就用graphic的addpoint啊
回复

使用道具 举报

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
 楼主| 发表于 2022-4-15 14:59:44 | 显示全部楼层
caicaptain2 发表于 2022-4-15 14:26
正常画曲线,就用graphic的addpoint啊

用 GRAPH的 addpoint 不靠谱吧。点数太多了啊。用这个addpoint之前是不是得用
GRAPH_DATA_XY_Create()先分布一定数量的 GUI_POINT 实体啊
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-23 12:25 , Processed in 0.478344 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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