html - 缩放后形状之间的间隙

标签 html canvas

在 HTML5 canvas 中使用 scale 时,我注意到有时元素之间会出现小间隙。例如:

context.scale(0.995, 1);
context.fillRect(0, 0, 100, 100);
context.fillRect(100, 0, 100, 100);

没有比例,两个矩形彼此靠近,但有比例,两者之间有微小的差距。有没有办法在不舍入比例因子的情况下摆脱它?

最佳答案

正如我在评论中所说,由于抗锯齿,这是一个渲染伪像。作为解决方法,您可以使用一个屏幕外缓冲区,您可以在未缩放的情况下渲染该缓冲区,然后将该图像放到您的原始 Canvas 上并打开正确的缩放比例。如果这样做,该行应该会消失。

以下片段可能会给您一个想法:

var buffer = document.createElement('canvas');
buffer.width = 200;
buffer.height = 100;
var context1 = buffer.getContext('2d');
context1.fillRect(0, 0, 100, 100);
context1.fillRect(100, 0, 100, 100);


var canvas = document.getElementById('canvasID');
var context = canvas.getContext('2d');
context.scale(0.995, 1);
context.drawImage(buffer, 0, 0);

context.fillRect(0, 120, 100, 100);
context.fillRect(100, 120, 100, 100);

将我示例(离屏渲染)中顶部的两个矩形与直接绘制在 Canvas 上的底部矩形进行比较。

关于html - 缩放后形状之间的间隙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5109074/

相关文章:

javascript - .onmouseout 似乎在不该触发的时候触发

image - 计算图像的DPI

html - 如何在 HTML5 中为 canvas 标签倾斜由 fillText() 生成的文本?

javascript - 如何实现带有不允许文本在其下方流动的 float 图标的列表项?

javascript - HTML onClick 函数改变 JavaScript 源码

javascript - 使用 javascript 在 HTML 中导入 XML

javascript - 检测碰撞 JavaScript

javascript - 在工具提示中显示标签但不在 chartjs 折线图的 x 轴中显示标签

css - 用 fabricjs 在 Canvas 中心画一条垂直线?

Javascript 定位不正确