当我应用canvas.getContext2d().scale(1.5, 1.5)
时,画布中的对象会按预期变大,但会模糊不清。
我需要做些什么才能让画布在不缩放时将我的对象绘制为锐利?
答案 0 :(得分:1)
使用抗锯齿渲染提示:
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
因此,当你扩展时,它看起来会更好。
右边的图像使用RenderingHints.VALUE_ANTIALIAS_ON
答案 1 :(得分:0)
我发现Canvas有ctx.transform()
和ctx.scale()
种方法。哪个工作正常,但由于它们的行为就像只是缩放图像一样,结果并不明显。猜猜是因为(反)唉等等。
所以我决定重写我的所有ctx.draw()
方法以尊重GLOBAL_OFFSET
,这会在用户放大和缩小时更改值。这样,画布对象可以保持其原始坐标点值,但是尊重缩放级别和偏移可以将它们绘制得更大或更薄,这种“模拟”缩放和平移。