0

我的设置:

我有一个GWT Canvas显示一些依赖于繁重算法的图形。对象是可拖动的,因此在拖动时,我将拖动对象旁边的所有内容保存在临时画布上,并将其作为拖动上下文后面的图像重用。

我的问题:我的拖动画布是一个重用的 Canvas 对象,在开始拖动之前必须先清除它,然后再将静态上下文保存到它。我想知道“重用和清除”是否比“创建新的画布对象”更好。

你怎么看?

每次都清除画布:

private Canvas canvas;
void buffer() {
   canvas.getContext2d().clearRect(0, 0, Window.getClientWidth(), Window.getClientHeight());
   //...draw
}

...或创建新对象:

void buffer() {
   Canvas canvas = Canvas.createIfSupported();
   //draw
}
4

1 回答 1

1

“重用和清除”更胜一筹。它更有效,因为它只调用 native clearRect(x, y, w, h)。在添加和删除小部件期间会触发许多事件。只有当它是一个逻辑概念时,我才会使用一个新对象。您可能还想考虑Lienzo

于 2013-04-03T15:06:31.413 回答