麦步社区-论坛

标题: MAIA想要找一个设置文字色彩的API竟找不到???? [打印本页]

作者: XZY    时间: 2018-8-5 14:51
标题: MAIA想要找一个设置文字色彩的API竟找不到????
像文本的背景色可以使用app_layer_set_bg_color();  app_layer_set_text_text(); 设定,但是文本的前景色,却没有相应的API,这是怎么回事?



作者: qs100371    时间: 2018-8-5 16:39
  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。第二个是官方用来显示文字图层的专用函数。


作者: XZY    时间: 2018-8-5 16:57
qs100371 发表于 2018-8-5 16:39
这两处都是文字颜色的设置,不用单独的API。第二个是官方用来显示文字图层的专用函数。

...

感谢回复,不知道上面的函数,反复调用会不会造成内存泄露.我想要的效果是运行时动态的改变文本的色彩.而不是再一次创建一个图层
作者: qs100371    时间: 2018-8-5 17:02
图层不支持动态改变颜色,只可更改文字,只能通过建立新层来替换旧层。
app_window_replace_layer
作者: XZY    时间: 2018-8-5 20:09
qs100371 发表于 2018-8-5 17:02
图层不支持动态改变颜色,只可更改文字,只能通过建立新层来替换旧层。
app_window_replace_layer ...

我试试,非常感谢
作者: XZY    时间: 2018-9-1 11:50
本帖最后由 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. }
复制代码



作者: smlqf3    时间: 2018-9-26 17:25
初来乍到,请多多关照。











成語   https://www.4way.tw/   2018年09月26日 排行榜
中醫足療    鼓勵的話 http://www.gfgfgf.com.tw/zyts/zyyj/  女士燙髮         http://www.gfgfgf.com.tw/zyxx/zyqy/  生日快樂祝賀詞
作者: 重庆生活网b    时间: 2018-12-24 19:16
谢谢楼主,好久没看到这么好的贴了




欢迎光临 麦步社区-论坛 (http://203.195.186.190/) Powered by Discuz! X3.2