当我应用canvas.getContext2d().scale(1.5, 1.5)
时,画布中的对象会按预期变大,但不知何故模糊了。
我必须做些什么才能使画布将我的对象绘制得与未缩放时一样清晰?
使用抗锯齿渲染提示:
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
所以当你扩展时,它看起来会更好。
右边的图像使用 RenderingHints.VALUE_ANTIALIAS_ON
我发现 Canvas 有很多ctx.transform()
方法ctx.scale()
。哪个工作正常,但由于它们的行为就像只是放大图像,结果并不清晰。猜猜是因为(反)激化和类似的东西。
所以我决定重写我所有的ctx.draw()
方法来尊重 a GLOBAL_OFFSET
,当用户放大和缩小时它会改变值。这样,画布对象可以保持其原始坐标点值,但考虑到缩放级别和偏移量,可以将它们绘制得更大或更薄,这会“模拟”缩放和平移。