(重新)绘制 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
}