绘图残影

__lhy 2010-12-31 02:13:39
   Graphics::TBitmap *Bitmap1=this->Image1->Picture->Bitmap;

for(int i=Bitmap1->Width;i<=Bitmap1->Width*2;i++)
{
TRect DestRect=Rect(Bitmap1->Width-i,0,Bitmap1->Width,Bitmap1->Height);
TRect SourceRect=Rect(0,0,i,Bitmap1->Height);
Application->ProcessMessages();
TRect rect=Rect(0,0,Bitmap1->Width,Bitmap1->Height);

// InvalidateRect(this->Handle,&rect,true);
Sleep(1);
Form1->Canvas->CopyRect(SourceRect,Bitmap1->Canvas,DestRect);
}

想要得到图像移出的效果,已经写好了移入,移出于是偷了下懒,结果移出时出现很严重的残影,使用
InvalidateRect(this->Handle,&rect,true);或Form1->Refresh()刷新出现同样严重的闪烁.
...全文
89 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccrun.com 2010-12-31
  • 打赏
  • 举报
回复
目前有效的方法就是首先开启双缓冲.
hemiya 2010-12-31
  • 打赏
  • 举报
回复
如果是c6在Form1构造函数加上DoubleBuffered = true, 2010直接在窗口属性上设置。
如果闪烁还是严重,没啥好方法了,gdi界面就这样了。

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧