画布标签拱形文本
Posted
技术标签:
【中文标题】画布标签拱形文本【英文标题】:Canvas tag arched text 【发布时间】:2013-01-13 00:56:45 【问题描述】:我正在编写一些在画布上沿弧线弯曲文本的代码,我让顶部尽可能接近,但我还需要在底部添加一些向上弯曲的文本。我搞不定。非常感谢任何帮助。
另外,这是我正在研究的小提琴的链接:here
var
text = 'Hello world, Im just JS',
len = text.length,
// The coverage of the circle
angle = Math.PI * .7,
centerX = 275,
centerY = 250,
radius = 200,
context = document.getElementById('canvas').getContext('2d'),
n = 0;
// Format the text
context.font = '40px Arial';
context.textAlign = 'center';
context.fillStyle = 'black';
context.strokeStyle = 'blue';
context.lineWidth = 2;
// Save the current state
context.save();
// Move our pointer
context.translate(centerX, centerY);
// Rotate
context.rotate(-1 * angle / 2);
context.rotate(-1 * (angle / len) / 2);
// Loop over the string
for(; n < len; n += 1)
context.rotate(angle / len);
context.save();
context.translate(0, -1 * radius);
context.fillText(text[n], 0, 0);
context.strokeText(text[n], 0, 0);
context.restore();
;
// Restore the canvas state
context.restore();
【问题讨论】:
我以为这是重复的,其实不是。 【参考方案1】:好的,我设法做到了。是两个非常小的变化。
它涉及在循环中反转翻译并反转输入字符串。完美
这是工作代码。 (注意两个小改动)和here 是一个链接
var
text = 'Hello world, Im just JS'.split('').reverse().join(''),
len = text.length,
// The coverage of the circle
angle = Math.PI * .7,
centerX = 275,
centerY = 250,
radius = 200,
context = document.getElementById('canvas').getContext('2d'),
n = 0;
// Format the text
context.font = '40px Arial';
context.textAlign = 'center';
context.fillStyle = 'black';
context.strokeStyle = 'blue';
context.lineWidth = 2;
// Save the current state
context.save();
// Move our pointer
context.translate(centerX, centerY);
// Rotate
context.rotate(-1 * angle / 2);
context.rotate(-1 * (angle / len) / 2);
// Loop over the string
for(; n < len; n += 1)
context.rotate(angle / len);
context.save();
context.translate(0, -(-1 * radius));
context.fillText(text[n], 0, 0);
context.strokeText(text[n], 0, 0);
context.restore();
;
// Restore the canvas state
context.restore();
【讨论】:
以上是关于画布标签拱形文本的主要内容,如果未能解决你的问题,请参考以下文章
sklearn - 从文本文档中预测多标签分类中的前 3-4 个标签
更新tkinter标签以在我的python GUI上一次显示一行文本文件