【问题标题】:(Re)drawing on a Canvas(重新)在画布上绘图
【发布时间】:2017-04-05 11:18:54
【问题描述】:

我将在SWT 中为自己编写一个模拟时钟。我设法在某个时间点绘制了它,并且一切正常,直到控件重新绘制自身为止。
似乎“旧图纸”通过绘图事件持续存在,我找不到删除它们的方法。理想的做法是对我在Canvas 上绘制的不同形状进行某种参考,以便我可以单独删除这些形状,但也可以使用一种清除整个画布的方法,以便我可以再次从头开始绘制所有内容。

我发现的 onyl 方法是处置当前的 Canvas 并在完全相同的位置创建一个新的 Canvas,但这对我来说似乎是一种非常简单的资源浪费......

【问题讨论】:

  • 我们可以看看一些代码吗?

标签: java canvas swt


【解决方案1】:

只需在绘制事件开始时用背景颜色填充Canvas

public void paintControl(PaintEvent event) {

  GC gc = event.gc;

  gc.setBackground(... background color ...);

  Rectangle fillRect = getClientArea();

  gc.fillRectangle(fillRect);

  ... continue drawing
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    • 2018-01-14
    • 2018-12-31
    相关资源
    最近更新 更多