根据不同区域功能不同分成若干部分,现在想设计一种动画效果,当鼠标停留在某一部分上时,这部分会突起来 比如有一个厂房的平面图,根据不同区域功能不同分成若干部分,现在想设计一种动画效果,当鼠标停留在某一部分上时,这部分会突起来 并改变颜色 用wincc7.0 具体怎么操作.
------看到这个问题第一点应该想到的是焦点,什么是焦点就是那个对象的一个框在WINCC可操作的符号 IO域按钮等等都有焦点当按按钮的时候按钮边框有白色的虚线那就是焦点框,你要通过鼠标停留激活某个动作必须使用鼠标单击 键盘按键等事件才可激活一些可用的动作事件。 我只是给个思路至于如何实现你自己去琢磨,下面是转载的一个读取焦点的例子楼主可以参考一下。
在wincc 中实现鼠标焦点的自动捕捉 时间:2012-05-15 来源:www.dqjsw.com.cn 编辑:网络转载 点击: 739次 字体设置: 大 中 小
比如,在画面中安放一按钮控件,当把鼠标移动到该按钮上方时(不点击该按钮),按钮的背景颜色发生变化。
答:1、动态获取鼠标的x、y值,在全局脚本中添加以下代码:
POINT myPoint;
GetCursorPos(&myPoint);
printf("%d/%d\r\n", myPoint.x, myPoint.y);
SetTagWord("mouse_x",myPoint.x);
SetTagWord("mouse_y",myPoint.y);
myPoint.x myPoint.y是已建好的变量
2、根据位置判断鼠标是否在该按钮范围,然后决定是否换颜色,很土的一个办法。
-------画面中每一个对象都有“鼠标悬停提示文本”属性(Tooltip Text)。对象凸起,改变颜色等放在Tooltip Text属性的改变事件中完成。
------对象突起,改变颜色具体怎么弄 可以详细说一下吗
-----首先要解决一个问题,如果你的区域都是不规则的多边形, 处理起来会很麻烦,要进行内点的处理, 所以尽量处理成矩形之类的规则图形;
2.将这个若干个图形的点集信息, 建立一个不规则数组,因为考虑到这么多图形,难以用想同的点来实现; 大致是这样的形式 struct Graphic{int n; POINT *p}; //n代表该区域的顶点个数; p包含的信息, 要去申请一块内存, 存放n个点的坐标;
然后 struct Graphic Areas[m];// m个区域 3.写一个函数, 判断某个坐标是否在区域内部 形式如下
BOOL CheckPoint(struct Graphic area, POINT pt); 4.全局脚本循环 int i = 0; POINT myPoint;
GetCursorPos(&myPoint); for(i= 0;i!=m; ++i)
{ if(CheckPoint(Areas, myPoint)
{ //这里进行颜色和突起操作
break; }
}
|