我现在程序要25个红绿灯做指示,我拉了25个picture控件,能正常显示,可是红绿灯灯要变换,当变换时,我用Invalidate()或者UpdateWindow()重绘时,界面抖动的很厉害,请问有什么办法解决这个问题吗?只有35分了。
解决方案 »
- 在OnPaint里面重绘的东西,闪一下就没有了
- 混音问题(G729编码再解码后进行混音)注:在多媒体区开了100分贴,回答好的还可以加分
- transmitfile在xp中不可以超过650M,在Server版本的windows中无此问题?寻求xp下的解决方案?
- 怎么样查询网络使用状况?
- 有人用过音频解编码库libspeex吗?急!急!急!急!
- 请问如何将局域网中某一计算机中的共享文件COPY到本地计算机
- 关于图形的函数
- VC与ASM混合编程(高手展示自己的时候到了)
- 关天注册表的问题,高手进呀!!!@¥#%
- 谁开发过siemens手机底层通讯程序?
- 《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();就可以了