回 帖 发 新 帖 刷新版面

主题:如何在C++Builder中保存窗口中的内容并快速恢复

在C++ Builder编程中,窗口中有我画的图形,本窗口中也有菜单项,当我打开菜单时会盖住我画的图形的一部分,当菜单消失后我不想用窗体重画功能来恢复我画的图形,因为太慢了。
    请问用什么方法来快速恢复原来的图形?

回复列表 (共6个回复)

沙发

希望高手回贴!

板凳

不用Invalidate()就用InvalidateRect(...)吧,不过要自己确定重画范围

3 楼

为什么我在窗口重画事件中无法用GetUpdateRect(Sender,&a,0)来获得重画的窗口大小?此函数GetUpdateRect执行时总是返回0,从而不能获得重画的窗口大小。
   看下面例子:
//窗口重画
void __fastcall TForm1::PaintBox1Paint(TObject *Sender)
{
  RECT a;         
  String Buf;

  if(GetUpdateRect(Sender,&a,true))
  {   
    Buf=a.left;
    Label5->Caption=Buf;
    Buf=a.right;
    Label6->Caption=Buf;
    Buf=a.top;
    Label7->Caption=Buf;
    Buf=a.bottom;
    Label8->Caption=Buf;
  }
  PaintBox1->Canvas->Pen->Width=12;
  PaintBox1->Canvas->Pen->Color=clRed;
  PaintBox1->Canvas->MoveTo(0,0);
  PaintBox1->Canvas->LineTo(100,0);
  PaintBox1->Canvas->LineTo(40,100);
}

4 楼

请高手指教!!!!

5 楼

你将画图形的代码放在哪里?一般来说,将画的代码放在OnPaint事件里,系统就会自动刷新。

6 楼

我的图形是在OnPaint事件中,只不过我不想全部重画,而只画被遮的部分,请问如何获得被遮部分的尺寸:见第3楼的描述。
   请高手解答!!!!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册