1

当我应用canvas.getContext2d().scale(1.5, 1.5)时,画布中的对象会按预期变大,但不知何故模糊了。

我必须做些什么才能使画布将我的对象绘制得与未缩放时一样清晰?

4

2 回答 2

1

使用抗锯齿渲染提示:

   Graphics2D g2 = (Graphics2D) g;
   g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

所以当你扩展时,它看起来会更好。

右边的图像使用 RenderingHints.VALUE_ANTIALIAS_ON 在此处输入图像描述

于 2013-04-29T15:50:04.073 回答
0

我发现 Canvas 有很多ctx.transform()方法ctx.scale()。哪个工作正常,但由于它们的行为就像只是放大图像,结果并不清晰。猜猜是因为(反)激化和类似的东西。

所以我决定重写我所有的ctx.draw()方法来尊重 a GLOBAL_OFFSET,当用户放大和缩小时它会改变值。这样,画布对象可以保持其原始坐标点值,但考虑到缩放级别和偏移量,可以将它们绘制得更大或更薄,这会“模拟”缩放和平移。

于 2013-05-05T17:45:17.250 回答