Panel Desiger中的Picture Box提供图形显示的功能,以在panel界面提供一个现实的界面,本文将以车后排门的开关状态的图形显示为例进行演示。
车的后排门的开关状态一共有四种状态
- 俩侧门都关闭
- 俩测门都开启
- 左侧开启右侧关闭
- 左侧关闭右侧开启
因此需要准备四个图片显示以上四个状态;示例的图片及名称如下:
如果我们要在panel实现如下功能,
- 按下A键,显示全关闭的图形
- 按下S键,显示全开启的图形
- 按下D键,显示仅左侧开启的图形
- 按下F键,显示仅右侧开启的图形
第一步:打开panel designer,建立四个picture box对象,并设置如下:
- 文件的路径(路径设置后,虚拟面板picture box的照片将从默认图片显示为当前选择的图片)
- 属性control name,这个属性将用于函数调用,软件通过这个属性来找到对应的图片;
- Cache iamge,是否缓存图片,如果设置为True,加载图片的时间会减少但需内存会增加(该选项可随意选择)。
第二步: 把四个图片拖到同一空间位置,panel显示多个状态的原理是,多个图片放在同一空间位置,通过函数设置在某一时刻仅显示其中特定图片,而其他图片不进行显示,形成了图片切换的效果。
第三部: CAPL编程
通过函数setControlVisibility(char[] panel_name, char[] control_name, boolean Isdispaly );来控制显示;
参数一:当前面板的名称,一般选择“”(注意中间没有空格),其代表当前所有的面板
参数二:Picture name的control name 属性
参数三: 是否进行显示;
void RearDoorStatusDisplay(char left_status, char right_status) { setControlVisibility("", "all_open", 0); setControlVisibility("", "allclose", 0); setControlVisibility("", "right_open", 0); setControlVisibility("", "left_open", 0); if((left_status == 0) &&(right_status == 0)) { setControlVisibility("", "allclose", 1); } else if((left_status == 0) &&(right_status == 1)) { setControlVisibility("", "right_open", 1); } else if((left_status == 1) &&(right_status == 0)) { setControlVisibility("", "left_open", 1); } else if((left_status == 1) &&(right_status == 1)) { setControlVisibility("", "all_open", 1); } else { write("Input para error"); } } on key "A" { RearDoorStatusDisplay(0,0); } on key "s" { RearDoorStatusDisplay(1,1); } on key "d" { RearDoorStatusDisplay(0,1); } on key "f" { RearDoorStatusDisplay(1,0); }
显示需要设置所有图片不显示,再设置需要图片显示。