JavaScript画布转换文本
我有以下问题: 我需要在HTML画布上转换文本,例如,给它一个梯形形状。 以下是我尝试过的:JavaScript画布转换文本,javascript,canvas,text,transform,Javascript,Canvas,Text,Transform,我有以下问题: 我需要在HTML画布上转换文本,例如,给它一个梯形形状。 以下是我尝试过的: context.beginPath(); context.moveTo(0, 0); context.lineTo(200, 0); context.lineTo(100, -100); context.lineTo(0, -100); context.closePath(); context.clip(); context.fillText("Hello World", this.x, this.y)
context.beginPath();
context.moveTo(0, 0);
context.lineTo(200, 0);
context.lineTo(100, -100);
context.lineTo(0, -100);
context.closePath();
context.clip();
context.fillText("Hello World", this.x, this.y);
正如您可能已经猜到的,文本将被剪切,而不是转换以适应形状。下面是我正在尝试做的事情和我成功做到的事情的图片
感谢您的帮助:)
我设法做到了:
我想做的是:
您可以做的是获得一个虚拟画布元素,在其中放置普通文本,然后您可以将自己的数学应用于
textCtx.getImageData
中的像素颜色值,并将其应用到您创建的另一个imageData数组中,因此,您可以使用transformedTextCtx.putImageData
将其放入另一个具有正确转换的画布中,最后使用ctx.drawImage
将其画布绘制到原始上下文中
我假设你知道你想应用的数学类型,如果不知道,我建议你研究倾斜和缩放,找出如何将两者结合起来
imageData
方法的mdn资源位于画布渲染上下文页面的“像素操作”部分:您可以获得一个虚拟画布元素,在其中放置普通文本,然后,您可以将自己的数学运算应用于textCtx.getImageData
中的像素颜色值,并将其放到您创建的另一个imageData数组中,这样您就可以使用transformedTextCtx.putImageData
将其放入另一个具有正确变换的画布中,最后使用ctx.drawImage
将画布绘制到原始上下文上
我假设你知道你想应用的数学类型,如果不知道,我建议你研究倾斜和缩放,找出如何将两者结合起来
imageData
方法的mdn资源位于画布渲染上下文页面的“像素操作”部分:将帮助您。Canvas2d不支持这种透视变换。我会帮助你的。Canvas2d不支持这种透视变换。