硬汉嵌入式论坛

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

[ThreadX全家桶] ThreadX GUIX窗口任意位置显示非控件类字符显示方法

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
发表于 2020-11-24 10:45:17 | 显示全部楼层 |阅读模式
类似emWin的GUI_DispStringAt函数,不仅可以在桌面显示,也可以在各种窗口/控件的回调函数WM_PAINT消息里面绘制。

GUIX的绘制是在窗口的Drawing Function里面实现即可,实现方法和教程的第13章2D图形在窗口任意绘制是一样的。

http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429

非控件类字符的任意绘制实现方法如下,此方法已经应用到教程第20章汉字全字库的实现。
  1. /*
  2. *********************************************************************************************************
  3. *        函 数 名: _cbWindow0
  4. *        功能说明: 窗口回调函数
  5. *        形    参: widget 窗口句柄
  6. *        返 回 值: 无
  7. *********************************************************************************************************
  8. */
  9. VOID _cbWindow0(GX_WINDOW *widget)
  10. {
  11.     GX_RECTANGLE drawto;
  12.     GX_CANVAS *mycanvas;
  13.    

  14.     /* 默认的窗口绘制回调函数,即默认界面效果绘制 */
  15.     gx_window_draw(widget);

  16.     /* 定义一个矩形框,后续的2D绘制函数都是在这个矩形范围内绘制的 */
  17.     gx_utility_rectangle_define(&drawto,
  18.                                 10,
  19.                                 100,
  20.                                 400,
  21.                                 265);

  22.     /* 返回窗口对应的canvas画布 */
  23.     gx_widget_canvas_get(widget, &mycanvas);
  24.    
  25.     /*
  26.       在指定的画布上启动绘图。此功能在内部被延迟绘图算法调用,GUIX在需要画布时自动执行更新。
  27.       但是允许应用程序绕过延期绘图算法并立即执行。
  28.       首先调用gx_canvas_drawing_inititate在画布上绘画。
  29.       然后调用所需的绘图函数,最后然后调用gx_canvas_drawing_complete即可。
  30.     */
  31.     gx_canvas_drawing_initiate(mycanvas, widget, &drawto);

  32.     /* 设置笔刷画线的颜色值 */
  33.     gx_context_raw_line_color_set(0xff000000);

  34.     /* 设置笔刷填充的颜色值 */   
  35.     gx_context_raw_fill_color_set(0xff00ff00);

  36.     gx_context_font_set(GX_FONT_ID_NOTOSERIFSC);
  37.     gx_canvas_text_draw(10, 130, "故人西辞黄鹤楼,烟花三月下扬州Ab", -1);
  38.     gx_canvas_text_draw(10, 160, "孤帆远影碧空尽,唯见长江天际流Cd", -1);
  39.    
  40.     /* 用于强制立即绘制,注意,务必和gx_canvas_drawing_initiate成对调用 */
  41.     gx_canvas_drawing_complete(mycanvas, GX_TRUE);
  42. }
复制代码


效果:



评分

参与人数 2金币 +30 收起 理由
byccc + 20 赞一个!
kirito + 10 很给力!

查看全部评分

回复

使用道具 举报

36

主题

2050

回帖

2158

积分

至尊会员

积分
2158
发表于 2020-11-24 15:36:50 | 显示全部楼层
晚上回去了试试
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

681

主题

3487

回帖

5555

积分

论坛元老

积分
5555
发表于 2020-11-25 16:46:22 | 显示全部楼层
本帖最后由 hpdell 于 2020-11-25 16:51 编辑

正好需要喲,感谢感谢啊
之前以为 是 guix 没有提供这样的函数,原来发现是自己不会使用啊,
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
 楼主| 发表于 2020-11-26 08:59:05 | 显示全部楼层
hpdell 发表于 2020-11-25 16:46
正好需要喲,感谢感谢啊
之前以为 是 guix 没有提供这样的函数,原来发现是自己不会使用啊,

这个幸亏之前做过2D的研究,否则还真不知道该怎么玩这个功能。
回复

使用道具 举报

681

主题

3487

回帖

5555

积分

论坛元老

积分
5555
发表于 2020-11-26 09:32:34 | 显示全部楼层
eric2013 发表于 2020-11-26 08:59
这个幸亏之前做过2D的研究,否则还真不知道该怎么玩这个功能。

这个方法貌似需要显示动态的 字符 的话,有些不大好啊,有什么方法可以自动触发让他自动更新显示啊 ?

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
 楼主| 发表于 2020-11-26 09:36:11 | 显示全部楼层
hpdell 发表于 2020-11-26 09:32
这个方法貌似需要显示动态的 字符 的话,有些不大好啊,有什么方法可以自动触发让他自动更新显示啊 ?

...

GUIX定时器,我之前专门做了GUIX定时器章节。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-20 02:41 , Processed in 0.254391 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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