HTML5画布-旋转矩形上的文本
HTML5 canvas - text on rotated rectangle
我正试图将文本放在sqlare上旋转45度。问题是我的文本在矩形下面。我可以更改文本的位置吗?
我的代码像
var c = document.getElementById("myCanvas");
var square= c.getContext("2d");
var text= c.getContext("2d");
text.fillStyle = "red";
text.fillText("1", 40, 50);
text.fillStyle = "#000000";
square.rotate(Math.PI / 4);
square.fillRect(50, 0, 50, 50);
jsfiddle
您先画文本,然后画矩形,然后想知道为什么文本在矩形后面?
首先,您只需要getContext
一次,而不需要两次。
其次,按照正确的顺序绘制:先绘制背景,然后绘制前景。
您可能对画布上下文的工作方式有误解。
你看,你只需要上下文的一个实例,然后你就可以用它来创建所有的形状、路径,甚至在画布上写文本。
此外,您正在矩形之前绘制文本,这会掩盖它。
考虑到这一点,我创建了一个新的JSFiddle,您可以在其中查看正确的方法。
HTML
<canvas id="myCanvas" width="300" height="150">
Your browser does not support the HTML5 canvas tag.
</canvas>
JavaScript
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d"); //we get the canvas context
ctx.save(); //save context properties
ctx.rotate(Math.PI / 4);
ctx.fillRect(50, 0, 50, 50);
ctx.restore(); //restore saved properties
ctx.fillStyle = "red";
ctx.fillText("1", 40, 50);
正如你所看到的,我们只举了一个上下文的例子,并从中得出结论。
上下文save()
和restore()
函数有助于防止旋转影响文本。您也可以在相反的方向上旋转相同的量。
希望它能有所帮助!
相关文章:
- 在HTML画布上格式化文本
- ThreeJS将画布中的文本渲染为纹理,然后应用于平面
- 无法将包含文本和图像的SVG保存到画布
- 无法使用JavaScript在画布上显示文本
- 如何在flash html5画布项目中动态更改文本颜色
- 我需要使用kineticjs点击事件以任何所需的角度旋转画布中的文本
- 通过从文本区域获取代码,在画布中运行处理代码
- html5画布-如何拉伸文本
- 将文本工具添加到绘制应用程序HTML5画布
- html5具有特定alpha的画布填充文本和具有不同alpha的背景
- 使用 clearRect() 覆盖画布上的文本输出
- HTML5 画布文本未显示
- Javascript:是否可以在2D画布中为不同的文本设置不同的字体大小
- 页面加载后更新画布文本
- HTML5 文本框在画布上的位置
- 清除画布形状中的文本
- 画布上的抗锯齿文本
- 当我单击画布并拖动鼠标时,光标将变为文本选择光标.我该如何防止这种情况发生
- 如何将文本设置为画布圆形
- HTML5文本画布旋转的情况下,文本宽度大于最大宽度允许