我现在程序要25个红绿灯做指示,我拉了25个picture控件,能正常显示,可是红绿灯灯要变换,当变换时,我用Invalidate()或者UpdateWindow()重绘时,界面抖动的很厉害,请问有什么办法解决这个问题吗?只有35分了。
解决方案 »
- 使用ADO连接各种数据库的连接串怎么写?
- *** 北京徵 C++ 程序员 (版主请高抬贵手勿删,谢谢)****
- 请问如何获取IE里的代理设置的信息?
- 请问怎么实现透明窗口并在其上显示一行字
- 大家好,我的VC出现问题了
- 请教:关于ftp和http的一个非常奇怪的问题
- 急!急!急!急!如何获得当前显示的分辨率,位深度。
- CDatabase::Open()和OpenEx()有什么区别?
- bool 和BOOL有什么区别?
- 有没有使用VC做过桌面视频剪辑(带时间线)、视频转换的软件,想交流,合作。
- 《windows程序设计》中关于调色板的小问题。
- C++怎么采用算法实现两点之间画无数点(而且点和点之间可以调节距离)
不要全部。
尺寸为100X100,24位色,低色为黑色
ID分别是IDB_红灯,IDB_绿灯
那么:
第一步,为类建立变量
CImageLisr xLight;
第二步,初始化该变量
xLight.Create(100,100,ILC_COLOR24|ILC_MASK,1,1);
CBitmap bmp;
bmp.LoadBitmap(IDB_红灯);
xLight.Add(&bmp,RGB(0,0,0));
bmp.DeleteObject();
xLight.LoadBitmap(IDB_绿灯);
bmp.DeleteObject();
第三步,建立25颗灯的位置变量和状态变量并初始化
CPoint xSet[25];
BOOL xSwitch[25];
第四步,画灯
void CXXXX::OnPaint()
{
for(int i=0;i<25;i++)
{
xLight.Draw(&dc,xSwitch[i],xSet);
}
}如果用双缓冲,效果就更好了
只需要xSwitch[7]^=1;
Invalidate();就可以了