编写控件时,控件的背景在拖动时不停的闪烁??

vbcrack 2008-05-08 12:12:56
从TCustomControl继承,在重写Paint函数后,总是闪烁,请问有什么解决的办法吗??

代码如下:

//重载Paint函数,绘制显示模式
void __fastcall TZoomFFT::Paint()
{
float Scale; //max与控件的实际长度的比例系数
TRect rect=this->ClientRect;
Scale=rect.Width()/(float)FMax;
Canvas->Draw(0,0,backBmp);
Canvas->Brush->Color=FForceColor; //滑块
Canvas->FillRect(TRect((FPageCenter-FPageSize/2)*Scale+dis,1,(FPageCenter+FPageSize/2)*Scale+dis,rect.Height()-2));
}
void __fastcall TZoomFFT::MouseMove(Classes::TShiftState Shift, int X, int Y)
{
if(Canvas->Pixels[X][Y]==FForceColor)
{
Cursor= crSizeAll;
if(canMove)
{
dis=X-oldX;
Invalidate();
}

}
else
Cursor= crDefault;

}
//---------------------------------------------------------------------------
//鼠标在控件上
void __fastcall TZoomFFT::MouseDown(TMouseButton Button,Classes::TShiftState Shift, int X, int Y)
{
canMove=true;
oldX=X;
TRect rect=this->ClientRect;
backBmp->Width=rect.Width();
backBmp->Height=rect.Height();
backBmp->Canvas->Brush->Color=FBackColor; //绘背景
backBmp->Canvas->FillRect(rect);
backBmp->Canvas->Pen->Color=clBlack;
backBmp->Canvas->Pen->Style=psSolid;
backBmp->Canvas->Rectangle(rect);
}






...全文
79 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
i_love_pc 2008-05-08
  • 打赏
  • 举报
回复
立体感是一个渲染的效果,比如加边框或者底色,或者用渐变。
vbcrack 2008-05-08
  • 打赏
  • 举报
回复
谢谢,基本上不闪了,但还有一个问题想请教一下

怎么使做出来的控件有立体感,比如 button等,谢谢了
i_love_pc 2008-05-08
  • 打赏
  • 举报
回复
打开双缓冲试一下。

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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