在另一个画布上绘制画布是模糊的。我该如何解决?

Posted

技术标签:

【中文标题】在另一个画布上绘制画布是模糊的。我该如何解决?【英文标题】:Drawing a canvas on another canvas is blurry. How can I fix it? 【发布时间】:2011-08-07 21:29:14 【问题描述】:

我一直在进行一些 html5 画布实验并进行了一系列技术实验edit https://github.com/AlexChesser/jsSprite(Minotaur 键演示中的 WSAD、Q、E、X 键,添加 C 和 B在僵尸演示中)

如果您查看演示编号 1:01-draw_minotaur.php,您会看到直接在画布上绘制的图像,它看起来漂亮而清晰。

但是,如果您与我将 Minotaur 放在画布上然后在父级上绘制该画布的演示进行比较,结果是模糊的:03-drawn_minotaur_on_canvas.php

如何确保画布上的画布不模糊?

EDIT 完整代码在 GIT 上:https://github.com/AlexChesser/jsSprite

edit2: 请注意,谷歌已将我的域标记为恶意软件(公平地说,由于托管服务提供商被黑客入侵,有一个短暂的时刻,其中存在某种恶意软件)而不是离开易受攻击的链接,我已经更新为专门指向 github 中的源代码。

【问题讨论】:

第一个链接现在被谷歌标记为恶意软件。 :( 谢谢。我已经更新了链接。它被标记为恶意软件,我已将其删除,但不能保证我的虚拟主机不会再次被黑客入侵。 是时候换一个新的虚拟主机了,我想。 :) 【参考方案1】:

这是一个棘手的问题!

对于画布,您实际上并不使用 Style 来确定其宽度和高度。

因此,通过设置画布的样式,实际上是在扭曲画布。

所以在你的主页上写<canvas id="game" width=512 height=512> </canvas>会解决你的问题。

我对其进行了测试以确认确实是问题所在,因此如果仍有问题,请告诉我,我会将代码发送给您。

也不应该只是 MainContext.drawImage(m.canvas, 0, 0); 吗?否则你会压扁牛头怪?

【讨论】:

我马上去看看!再次感谢西蒙。 ...(编辑)在这两个方面都 100% 正确。以前,Mino 并没有被压扁,但它的风格有点奇怪。现在让它滚动。我认为我现在终于可以了解基本的游戏逻辑了!再次感谢! 请不要喂牛头怪,礼貌微笑,然后移到下一个动物。

以上是关于在另一个画布上绘制画布是模糊的。我该如何解决?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 jpeg 或 png 格式的字节数组在画布上绘制图像

如何在没有抗锯齿的情况下在画布上绘制像素字体

如何清除画布以进行重绘

用canvas画布画一个圆形的进度条,里面的数字是模糊的怎么解决?谢谢

使用 fabric.js 在画布上绘制文本

如何让用户在Android中随意绘制长画布?