【发布时间】:2015-08-12 22:57:04
【问题描述】:
我正在使用 Borland C++Builder 6。
我有两种形式的方法:
void __fastcall FDisplay::PaintBox1Paint(TObject *Sender)
void __fastcall FDisplay::TimerLabelsViewTimer(TObject *Sender)
在第一种方法中,我绘制坐标系。
在我做的第二种方法中:
PaintBox1->Canvas->MoveTo(693,201);
PaintBox1->Canvas->LineTo(770,187);
并且该线不出现在坐标系上。
我的第二个问题,我怎样才能擦除线条并返回到基础油漆?我应该这样做吗?
PaintBox1->Invalidate();
PaintBox1->Update();
【问题讨论】:
-
PaintBox 没有撤消/重做功能,因此您需要 1. 通过将基本 gfx 复制到某个位图中自行实现它,然后将其用作每次重绘的起点 2. 全部重绘绘制例程(通常有一个绘制例程更好,也更安全) 3. 如果你的线没有交叉,那么你可以在绘制下一条之前简单地用背景颜色绘制同一条线
-
Invalidate 和 Update 调用通常不直接使用。 VCL 使用它们来处理自己的东西。它们用于安排/强制
OnPaint事件,可能还有更多。
标签: canvas c++builder c++builder-6 paintbox