工控元件开发(200分)

  • 主题发起人 sahxinyu
  • 开始时间
S

sahxinyu

Unregistered / Unconfirmed
GUEST, unregistred user!
最近正在搞工控(动画)元件的开发,不知道如何进行?

还请各位前辈指点迷津.
 
关健还是画图的算法问题,及表示设备状态的图元结构设计问题。如设计一个简单的水位计,
|_____| |
| |
| |
| |
|_____|
先设计一个水位计类
class CWaterLevel
{
int MaxLevel;
int currentLevel;
DrawRect(int level);
}waterLever;
根据水位的高度画出一个有填充色矩形。就可以,水位的数据肯定是动态的,不断变化的,
只需要用一个定时器来不停的调用这个类的画图的函数就可动态的表示这个水位计的水位的
状态。
ontime //定时事件
{
OnPaint();
}
onPaint()//窗体的重画事件
{
waterLevel.drawRect;//画水位的函数
}
这样从视觉上看,水位就是动态的变化的,因为所画的矩形的高低是不断的变化的。在重画事件
里,窗体不断的擦除以前的图,再重画当前的图,一点也不影响。
更复杂的动画都是同样的道理,如画一个表示压力表,只需要首先画一个规划化的弧形
刻度计,然后根据传进来的压力数据,不断的重画这个压力计的表针,就可。
当然如果不想让图像抖动的太厉害,要考虑重画的方式。


 
关注,“窗体不断的擦除以前的图”,这样会不会闪的很厉害。要是闪的话可能要局部的重画了,要好的算法了。
 
使用线程
 
to:OneEyeWolf
能不能再指点指点。
QQ:47571859
MSN:shiaihua2000@msn.com

 
另外,我在做的时候,也遇到闪烁现象,采用什么算法?什么方法可以解决?
 
用DirectX啦!不会闪
 
其实如果采用局部重画的时候,已经可以满足条件了,我试过,只有重画的区域不太大。
不会出现的大的抖动。而一般的情况下,重画的区域是很小。例如刚才的例子,重画的
区域是就是这个矩形的区域,这个区域是非常小的。根本觉察不到抖动。
方法在重画时首先得到需要重画的最小矩形或区域,然后使这个区域失效并重画就行。可以
满足一般的要求。

 
简单的功能不用DIRECTX,太复杂了
另外,如果需要的话
可以看《DELPHI7项目开发实践》
 
哪里有《DELPHI7项目开发实践》?

另外,我想问问有关场景的设计,希望各位能指点指点?
 
多人接受答案了。
 
是中国铁道出版社即将推出的项目开发系列之一。
 
顶部