oolBar的闪烁问题,很奇怪,实在没辙了,高分求教

csdn_tw 2006-03-13 05:09:17
有一个ToolBar,在其上放置两个ToolButton,将ToolBar的Flat属性设为true,在OnCustomDrawButton事件中有如下代码:

TPoint P;
GetCursorPos(&P);

if(PtInRect(&(Button->BoundsRect),ToolBar->ScreenToClient(P)))
Sender->Canvas->Brush->Color=clRed;
else
Sender->Canvas->Brush->Color=clBtnFace;

Sender->Canvas->FillRect(Button->BoundsRect);

DefaultDraw=false;

大致就是这样子,目的是当鼠标在ToolBar上移动时,因为Flat属性设为true,会引发OnCustomDrawButton事件,在事件句柄中判断鼠标位置,以此改变按钮颜色,即当鼠标移到按钮上时,用红色填充按钮框,移开时用clBtnFace填充.

现在的问题是:当鼠标移动时,两种颜色的交替变换时,总会有闪烁,尤其在配置低的机器上,可以看见有一个白色的填充区域一闪而过,也就是说在黄色和灰色变换时,不是直接变换,中间有一个步骤是用白色填充了一次,从而造成闪烁.我试了许多方法,包括响应WM_ERASEBKGND消息都不能解决,好像画刷的背景色始终是白色.各位有何高见,帮我指点指点,不胜感激
...全文
91 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdn_tw 2006-03-14
  • 打赏
  • 举报
回复
Form和ToolBar都加了,不管用.还有什么其他意见,着急呀
aiirii 2006-03-13
  • 打赏
  • 举报
回复
窗体创建时,加一句:
self.DoubleBuffered := true;

看有没有用

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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