我想应用ozt_strong进行放大和缩小,以便在画布上重绘对象,以便在最大和最小缩放级别下都能获得清晰的视图。

我得到了如何做的参考here,因此我将画布传递给了可扩展图像构造函数而不是Image,并按照所有步骤进行了操作。我再次在“mainDraw” 方法中重画对象,但没有得到正确的结果。我知道我缺少重新绘制画布的新比例和转换因子,但不知道如何设置它。我正在画布上绘制多个对象,例如弧形,矩形等。因此,性能是主要问题。

我已经设置了context.translate(0,canvasHeight);和context.scale(1,-1);从左下角开始坐标系统。(根据要求)

下面是带有一个对象的示例代码,我将此画布传递给可伸缩图像构造函数,并在“mainDraw” 中再次调用它。

int canvasHeight = 600;
int canvasWidth = 600;

Canvas canvas = Canvas.createIfSupported();
Context2d context = pcbCanvas.getContext2d();
canvas.setWidth("600");
canvas.setHeight("600");

canvas.setCoordinateSpaceHeight(canvasHeight);
canvas.setCoordinateSpaceWidth(canvasWidth);

context.translate(0, canvasHeight);
context.scale(1, -1);

context.beginPath();
context.rect(x, y, width, height);
context.closePath();
context.fill();

RootPanel.get("canvasContainer").add(canvas);

有什么参考或想法吗?
谢谢

最佳答案

如果在我的示例中使用back上下文,则应允许您缩放画布。您也可以修改构造函数,以使用另一个画布小部件而不是图像。这可能是最好的解决方案。

在mainDraw()中,您可以修改backContext以添加画布小部件而不是图像。

10-07 18:55