主题:如何在C++Builder中保存窗口中的内容并快速恢复
cly114
[专家分:0] 发布于 2005-05-26 22:12:00
在C++ Builder编程中,窗口中有我画的图形,本窗口中也有菜单项,当我打开菜单时会盖住我画的图形的一部分,当菜单消失后我不想用窗体重画功能来恢复我画的图形,因为太慢了。
请问用什么方法来快速恢复原来的图形?
回复列表 (共6个回复)
沙发
cly114 [专家分:0] 发布于 2005-05-28 22:00:00
希望高手回贴!
板凳
christ115 [专家分:1580] 发布于 2005-05-28 22:53:00
不用Invalidate()就用InvalidateRect(...)吧,不过要自己确定重画范围
3 楼
cly114 [专家分:0] 发布于 2005-06-09 22:47:00
为什么我在窗口重画事件中无法用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 楼
cly114 [专家分:0] 发布于 2005-06-16 23:08:00
请高手指教!!!!
5 楼
iamdream [专家分:620] 发布于 2005-06-21 10:12:00
你将画图形的代码放在哪里?一般来说,将画的代码放在OnPaint事件里,系统就会自动刷新。
6 楼
cly114 [专家分:0] 发布于 2005-07-08 22:36:00
我的图形是在OnPaint事件中,只不过我不想全部重画,而只画被遮的部分,请问如何获得被遮部分的尺寸:见第3楼的描述。
请高手解答!!!!!
我来回复