返回官网官方微博

麦步社区-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: MAI 表盘
查看: 6245|回复: 7
打印 上一主题 下一主题

[表盘讨论] MAIA想要找一个设置文字色彩的API竟找不到????

[复制链接]

3

主题

10

帖子

1184

麦力

精华
0
阅读权限
30
在线时间
26 小时

跳转到指定楼层
楼主
发表于 2018-8-5 14:51:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
像文本的背景色可以使用app_layer_set_bg_color();  app_layer_set_text_text(); 设定,但是文本的前景色,却没有相应的API,这是怎么回事?


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信 WeiboWeibo
收藏收藏1 分享分享 顶1 踩

66

主题

915

帖子

1万

麦力

精华
8
阅读权限
80
在线时间
1040 小时

麦步极客实验室麦步增强版用户

沙发
发表于 2018-8-5 16:39:12 | 只看该作者
  sprintf(str, "%d", data.step);
  LayerText lt_step = {str, frame_step, GAlignCenter, GColorWhite, U_ASCII_ARIAL_20};
  p_layer = app_layer_create_text(&lt_step);
  app_layer_set_bg_color(p_layer, color1);
  app_window_add_layer(p_window, p_layer);

/*创建并显示文本图层*/
int32_t display_target_layerText(P_Window p_window, const GRect  *temp_p_frame, enum GAlign how_to_align, enum GColor color, char * str, uint8_t font_type, enum GColor fcolor)
{
  LayerText temp_LayerText = {0};
  temp_LayerText.text = str;
  temp_LayerText.frame = *temp_p_frame;
  temp_LayerText.alignment = how_to_align;
  temp_LayerText.font_type = font_type;
  temp_LayerText.foregroundColor = fcolor;

  P_Layer p_layer = app_layer_create_text(&temp_LayerText);

  if (p_layer != NULL)
    {
      app_layer_set_bg_color(p_layer, color);
      return app_window_add_layer(p_window, p_layer);
    }
  return 0;
}
这两处都是文字颜色的设置,不用单独的API。第二个是官方用来显示文字图层的专用函数。

3

主题

10

帖子

1184

麦力

精华
0
阅读权限
30
在线时间
26 小时

板凳
 楼主| 发表于 2018-8-5 16:57:01 | 只看该作者
qs100371 发表于 2018-8-5 16:39
这两处都是文字颜色的设置,不用单独的API。第二个是官方用来显示文字图层的专用函数。

...

感谢回复,不知道上面的函数,反复调用会不会造成内存泄露.我想要的效果是运行时动态的改变文本的色彩.而不是再一次创建一个图层

66

主题

915

帖子

1万

麦力

精华
8
阅读权限
80
在线时间
1040 小时

麦步极客实验室麦步增强版用户

地板
发表于 2018-8-5 17:02:32 | 只看该作者
图层不支持动态改变颜色,只可更改文字,只能通过建立新层来替换旧层。
app_window_replace_layer

3

主题

10

帖子

1184

麦力

精华
0
阅读权限
30
在线时间
26 小时

5#
 楼主| 发表于 2018-8-5 20:09:07 | 只看该作者
qs100371 发表于 2018-8-5 17:02
图层不支持动态改变颜色,只可更改文字,只能通过建立新层来替换旧层。
app_window_replace_layer ...

我试试,非常感谢

3

主题

10

帖子

1184

麦力

精华
0
阅读权限
30
在线时间
26 小时

6#
 楼主| 发表于 2018-9-1 11:50:36 | 只看该作者
本帖最后由 XZY 于 2018-9-1 11:51 编辑

感谢qs100371,终于实现了动态彩色文本的显示了代码如下
反复调用请将返回值即layer_id代入
  1. //create_txt_layer_replace()
  2. //pwin为窗体指针
  3. //文本图层ID:old_lyid等于-1则创建文本图层,等于旧的ID则替换,返回新的ID
  4. //txt为字符串
  5. //font_type为字体:英文U_ASCII_ARIAL_16   U_ASCII_ARIALBD_16  U_ASCII_ARIAL_20   U_ASCII_ARIALBD_20   U_ASCII_ARIAL_24        U_ASCII_ARIALBD_24  U_ASCII_ARIAL_30 U_ASCII_ARIALBD_30  U_ASCII_ARIAL_42  U_ASCII_ARIALBD_42  汉字( U_GBK_SIMSUN_16    U_GBK_SIMSUNBD_16  U_GBK_SIMSUN_20   U_GBK_SIMSUNBD_20  )         
  6. //x,y,h,w为显示坐标与宽高
  7. //frcolor为字体前景色//bkcolor为字体背景色     GColorBlack ,     GColorRed  ,     GColorGreen ,     GColorBlue ,     //GColorYellow,     GColorPurple,     GColorCyan ,   GColorWhite //白色
  8. //align为对齐方式      GAlignCenter,     GAlignTopLeft,     GAlignTopRight ,     GAlignTop ,     GAlignLeft,     GAlignBottom,     GAlignRight,     GAlignBottomRight,     GAlignBottomLeft
  9. //eg: int8_t lyid_weekday=-1; lyid_weekday=create_txt_layer_replace(p_win,lyid_weekday, txt_buf,U_ASCII_ARIALBD_20,0, 17,  20,  176,GColorCyan,GColorBlack,GAlignTopLeft);

  10. static int8_t  create_txt_layer_replace(Window *pwin, int8_t old_lyid,char *txt,uint8_t font_type,int16_t x,int16_t y,uint8_t h,uint8_t w,enum GColor frcolor,enum GColor bkcolor,enum GAlign align)//return layer id
  11. {
  12.      GRect frame_hm;
  13.      fillGRect( &frame_hm,x,y,h,w );
  14.      LayerText alt_hm =
  15.      {
  16.           .text=(const char*) txt,
  17.           .frame= frame_hm,
  18.           .alignment=align,
  19.           .foregroundColor=frcolor,//MAIA彩色表多了这个元素,之前的排列方式初始化方式会错误初始化
  20.           .font_type=font_type,
  21.           .bound_width= 0
  22.       };

  23.      P_Layer p_layer_new = app_layer_create_text(&alt_hm);
  24.      int8_t id=-1;
  25.      if(p_layer_new != NULL)
  26.      {
  27.                app_layer_set_bg_color(p_layer_new, bkcolor);
  28.                if(old_lyid!=-1)
  29.                {
  30.                     P_Layer p_layer_old=app_window_get_layer_by_id(pwin, old_lyid);   //lyer id为0是合法值
  31.                     if(p_layer_old!=NULL)
  32.                     {
  33.                          id= app_window_replace_layer(pwin,p_layer_old, p_layer_new);//替换图层
  34.                     }
  35.                }
  36.                if(id==-1)
  37.                {
  38.                     id = app_window_add_layer(pwin, p_layer_new);
  39.                }
  40.      }
  41.      return id;
  42. }
复制代码


0

主题

27

帖子

444

麦力

精华
0
阅读权限
30
在线时间
14 小时

7#
发表于 2018-9-26 17:25:20 | 只看该作者
初来乍到,请多多关照。











成語   https://www.4way.tw/   2018年09月26日 排行榜
中醫足療    鼓勵的話 http://www.gfgfgf.com.tw/zyts/zyyj/  女士燙髮         http://www.gfgfgf.com.tw/zyxx/zyqy/  生日快樂祝賀詞

0

主题

68

帖子

-104

麦力
精华
0
阅读权限
0
在线时间
12 小时

8#
发表于 2018-12-24 19:16:21 | 只看该作者
谢谢楼主,好久没看到这么好的贴了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|麦步官方论坛 ( 粤ICP备12052190号  

GMT+8, 2024-11-24 03:57 , Processed in 0.071197 second(s), 24 queries .

Powered by Discuz! X3.2

© 2012-2021 Comsenz Inc.

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