如何填充图形对象?

描述:
图形对象的“动态填充”属性只允许从底部到顶部填充对象。本条目描述了如何动态化一个矩形,以达到棒图从右到左增长的效果。对象的大小和位置也可以通过同样的方法实现动态化。n

注意:
尽量使用智能对象 "bar" 代替图形对象 "rectangle"。
棒图对象的好处在于:n

  • 动态化和方向无关。n
  • 无需脚本,变量可以直接连接,棒图是可以根据比列放大缩小。n
  • 棒图可以在图形编辑器中移动,而不会改变动态属性。

    在WinCC实例中有以下对象被引用:
描述 对象名称 属性
填充变量 "Level" 无符号8位数值, 下限: 0, 上限: 100
边界矩形 "Border" 几何: X=19, Y=39, 宽度=402, 高度=32
填充矩形 "LevelRect" 几何: X=20, Y=40, 宽度=400, 高度=30
颜色: 线颜色 =背景颜色

n

注意:
对所有的动态都使用变量触发:

  • 变量: "Level"n
  • 更新: "一旦改变"

选择1:动态值的范围
为下面的填充矩形设置动态效果。n

如何填充图形对象?
图 01n

  • 位置X: 公式: 420 - (400/100 * 'Level')n
  • 宽度: 公式: 400/100 * 'Level'

如何填充图形对象?
图 02: 动态位置X

选择2:用C脚本作动态化

编号 描述:
1 属性"位置 X"的C脚本 n

#include "apdefap.h"
long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
int level;
level = GetTagByte("Level");
return 420 - ( orgWidth / 100 * level );
}

2属性"宽度"的C脚本

#include "apdefap.h"
long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
int level;
level = GetTagByte("Level");
return 400 / 100 * level;
}

选择3: 用VB脚本作动态化

编号 描述:
1 属性"位置 X"的VB脚本

Function Left_Trigger(Byval Item)
Dim level
Set level = HMIRuntime.Tags("Level")
Item.Left = 420-(400/100 * level.Read)
End Function

2属性"宽度"的VB脚本

Function Width_Trigger(Byval Item)
Dim level
Set level = HMIRuntime.Tags("Level")
Item.Width = 400/100 * level.Read
End Function

结果:

如何填充图形对象?
图 03

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc332756.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日 下午12:03
下一篇 2021年4月12日 上午12:00

相关推荐

发表回复

登录后才能评论