(重新)绘制 Canvas
(Re)drawing on a Canvas
我即将在 SWT
中为自己编写一个模拟时钟。我设法在某个时间点绘制了它,并且一切正常,直到控件重新绘制自身为止。
"old drawings" 似乎在绘图事件中一直存在,我找不到删除它们的方法。理想的是对我在 Canvas
上绘制的不同形状的某种引用,以便我可以单独删除它们,但是一种清除完整 canvas 的方法,以便我可以再次从头开始绘制所有内容也将不胜感激。
我发现的 onyl 方法是处理当前的 Canvas 并在完全相同的位置创建一个新的,但对于我来说,对于这么简单的事情来说,这似乎是一种巨大的资源浪费......
只需在绘制事件开始时用背景颜色填充 Canvas
。
public void paintControl(PaintEvent event) {
GC gc = event.gc;
gc.setBackground(... background color ...);
Rectangle fillRect = getClientArea();
gc.fillRectangle(fillRect);
... continue drawing
}
我即将在 SWT
中为自己编写一个模拟时钟。我设法在某个时间点绘制了它,并且一切正常,直到控件重新绘制自身为止。
"old drawings" 似乎在绘图事件中一直存在,我找不到删除它们的方法。理想的是对我在 Canvas
上绘制的不同形状的某种引用,以便我可以单独删除它们,但是一种清除完整 canvas 的方法,以便我可以再次从头开始绘制所有内容也将不胜感激。
我发现的 onyl 方法是处理当前的 Canvas 并在完全相同的位置创建一个新的,但对于我来说,对于这么简单的事情来说,这似乎是一种巨大的资源浪费......
只需在绘制事件开始时用背景颜色填充 Canvas
。
public void paintControl(PaintEvent event) {
GC gc = event.gc;
gc.setBackground(... background color ...);
Rectangle fillRect = getClientArea();
gc.fillRectangle(fillRect);
... continue drawing
}