迪文科技论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: fd222

【提问】模拟触控如何实现选中效果

[复制链接]

20

主题

76

回帖

322

积分

中级会员

Rank: 3Rank: 3

积分
322
发表于 2025-8-28 14:55:08 | 显示全部楼层
ZVIP7679 发表于 2025-8-28 14:44
可以把基本图形控件放下面,文本显示控件放上面。


好的  我试试  还有一个问题,我看到其他帖子说这个图形数量改为0可以清除基本图形,但是我实际测试的时候不行,是为啥呀


  1. /**
  2. * @brief 绘制或清除2D形状
  3. * 注意:当shape_num为0时,会清除2D图形
  4. * @param shape_data 图形指令及数据
  5. */
  6. void sys_draw_shape(u16 * shape_data)
  7. {
  8.         //#define SHAPE_NUM                1                                //只绘制一个
  9.         #define END_FLAG                0xff00        //绘制结束标记
  10.         u8 len;
  11.        
  12.         switch(shape_data[1])
  13.         {
  14.                 case SHAPE_TYPE_POINT://绘制点
  15.                         //((SHAPE_DATA_POINT*)shape_data)->shape_num = SHAPE_NUM;
  16.                         ((SHAPE_DATA_POINT*)shape_data)->end_flag = END_FLAG;
  17.                         len = sizeof(SHAPE_DATA_POINT)-2;
  18.                         break;
  19.                 case SHAPE_TYPE_LINE://端点连线或线段
  20.                         //((SHAPE_DATA_LINE*)shape_data)->shape_num = SHAPE_NUM;
  21.                         ((SHAPE_DATA_LINE*)shape_data)->end_flag = END_FLAG;
  22.                         len = sizeof(SHAPE_DATA_LINE)-2;
  23.                         break;
  24.                 case SHAPE_TYPE_RECT://画矩形
  25.                 case SHAPE_TYPE_FILL_RECT://画填充矩形
  26.                         //((SHAPE_DATA_RECT*)shape_data)->shape_num = SHAPE_NUM;
  27.                         ((SHAPE_DATA_RECT*)shape_data)->end_flag = END_FLAG;
  28.                         len = sizeof(SHAPE_DATA_RECT)-2;
  29.                         break;
  30.                 case SHAPE_TYPE_AREA_COPY://界面区域拷贝
  31.                         //((SHAPE_DATA_AREA_COPY*)shape_data)->shape_num = SHAPE_NUM;
  32.                         ((SHAPE_DATA_AREA_COPY*)shape_data)->end_flag = END_FLAG;
  33.                         len = sizeof(SHAPE_DATA_AREA_COPY)-2;
  34.                         break;
  35.                 case SHAPE_TYPE_VER_LINE://频谱,垂直线
  36.                         //((SHAPE_DATA_VER_LINE*)shape_data)->shape_num = SHAPE_NUM;
  37.                         ((SHAPE_DATA_VER_LINE*)shape_data)->end_flag = END_FLAG;
  38.                         len = sizeof(SHAPE_DATA_VER_LINE)-2;
  39.                         break;               
  40.         }
  41.        
  42.         sys_write_vp(shape_data[0],(u8*)(shape_data+1),len/2);
  43. }

  44. /**
  45. * @brief 切换操作名称选择状态,选中状态下背景为蓝色,否则清除填充矩形
  46. * @param lineNum 文本所在行数,1-4
  47. * @param status 是否处于选中状态  1:选中  0:未选中
  48. */
  49. void GUI_SetupES_ChangeNameSelect(u8 lineNum,u8 status)
  50. {
  51.     SHAPE_DATA_RECT fill_rect;
  52.     u8 idx = lineNum - 1;

  53.     if (status)
  54.     {
  55.         fill_rect.shape_num = 1;
  56.         fill_rect.vp = gText[idx].rextFillVp;
  57.         fill_rect.shape_type = SHAPE_TYPE_FILL_RECT;
  58.         fill_rect.xs = gText[idx].rectFill_Xs;
  59.         fill_rect.ys = gText[idx].rectFill_Ys;
  60.         fill_rect.xe = gText[idx].rectFill_Xe;
  61.         fill_rect.ye = gText[idx].rectFill_Xe;
  62.         fill_rect.color = 0x001F;  //蓝色
  63.         sys_draw_shape((u16*)&fill_rect);
  64.     }
  65.     else
  66.     {
  67.         fill_rect.shape_num = 0;   //清除基本图形
  68.         fill_rect.vp = gText[idx].rextFillVp;
  69.         fill_rect.shape_type = SHAPE_TYPE_FILL_RECT;
  70.         fill_rect.xs = gText[idx].rectFill_Xs;
  71.         fill_rect.ys = gText[idx].rectFill_Ys;
  72.         fill_rect.xe = gText[idx].rectFill_Xe;
  73.         fill_rect.ye = gText[idx].rectFill_Xe;
  74.         fill_rect.color = 0x001F;  //蓝色
  75.         sys_draw_shape((u16*)&fill_rect);
  76.     }
  77.    
  78. }  
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0

主题

371

回帖

2471

积分

金牌会员

Rank: 6Rank: 6

积分
2471
发表于 2025-8-28 20:57:25 | 显示全部楼层
基本图形清除,前面两个地址也写0,0x5440,0x5441
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2025-10-15 09:03 , Processed in 0.028660 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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