RUI Studio 帮助

扇区触摸与角度变量

圆形热区当旋钮:按下/拖动把落点极角 0~359 写入变量。

触摸区 的命中形状设成 扇区,再绑 角度变量,就得到一个没有滑块图的圆形旋钮:手指绕圆心拖,软件把落点极角写入变量。

适合音量、亮度、温度、航向这类「拧一圈」的交互。直线拖动请用 滑动条

角约定

画布提示 Sector 0=up CW 的意思是:

约定
正上(12 点)
正方向顺时针:90° 右、180° 下、270° 左
写入值绝对极角 0~359,不是 0~扫过角
何时写按下、拖动开始、拖动中、拖动结束(不是「点击」才写)
圆心正好点在圆心时不写

起始角° / 扫过角° 只决定哪一块能点中。例如起始 0°、扫过 270°,可点区域是 12 点顺时针到 9 点(左上 90° 缺口点不中)。按下之后即使拖出扇区,仍按整圈写 0~359。

本期 不是 环形滑块:没有内半径、没有绕圈拇指图。外接框仍用 X/Y/宽高。

实用场景

场景怎么用这个角度
音量 / 亮度 / 温度 / 风量0~359 再映射到 0~100 或量程
航向 / 风向 / 云台值本身就是方位角
圆形菜单用区间判断:0~90 项 1、90~180 项 2…
仪表指针跟手用标签变量按值换文案、颜色或图

不适合:普通加减(按钮)、开关(触摸开关)、直线进度(滑动条 / 进度条)。

怎么配

1. 先建变量

打开 变量设计,建一个 I32(推荐名如 sector_deg),最小 0、最大 359。不要用布尔(只会变成 0/1)。

2. 扇区热区

  1. 放一块触摸区,命中形状选 扇区
  2. 填起始角、扫过角(可点范围)。
  3. 角度变量 下拉选刚建的变量。

事件绑定可以先保持 点击 / 无。写角度不占用、也不吞掉跳页或回调;同一热区仍可另绑点击跳页等。

不要 再用「设置变量」去写同一个角度变量,否则会把刚算的角度盖成固定值。

3. 屏幕上显示度数(可选)

写变量和画字是两条线:只绑角度变量,画面上的 000 不会自己跟手变。

若要跟手显示:

  1. 放一个标签变量(或 软字库 / 内嵌字),关联变量 选同一个 sector_deg
  2. 给扇区 添加事件绑定:事件选 按下拖动(不要只靠点击,点击要抬手才发生)。
  3. 动作选 设置变量,设一个 别的 占位变量(不要设 sector_deg)。
  4. 刷新回调,刷新关联勾上那个数字标签。

顺序是:先写入真实角度 → 再设占位变量 → 刷新回调按标签自己绑的 sector_deg 重画。

只给 MCU 用、屏上不显示数字时,第 3 步可以不做。

效果演示

效果演示 里拖扇区会写入模拟变量。数字要跟手刷,同样需要上面的刷新关联;否则变量已经在变,字还停在 000

下位机怎么读

导出后角度在运行时 ui_vars 里(和滑动条改的是同一套表),不是 RuiBuilder.c 里的全局变量。

ui_var_t* v = ui_var_get(UI_VAR_sector_deg);
int32_t deg = (v != 0) ? v->v.i32 : 0;
/* 映射到音量、航向,或上报主机 */

切页后 Page_Show 会刷本页显示;拖动过程中要跟手,仍靠上面的刷新回调。