我有什么: 沿着由圆圈做出的路径的文本。它使用Raphael.js和一个名为textOnPath的函数(在这里找到:Raphael JS Text Along path):
var pathTest = r.path(getCircletoPath(286, 322, radius)).attr({stroke:"#b9b9b9"});
textOnPath(message, pathTest, fontSize, fontSpacing, kerning, kerning, point, textFill, fontNormal, fontFamily);
JSFiddle:http://jsfiddle.net/zorza/62hDH/1/
我需要什么: 文本将以圆圈顶部为中心。
我的方法: 尝试根据弧大小和文本宽度计算文本的起始位置。我尝试通过使用text()函数创建它的隐形克隆来计算文本宽度,并获得它的BBox宽度。
它不起作用,结果因Web浏览器,使用的字体以及字母和空格的数量而异:
var length = r.text(100,400,message)
.attr({"font-size":fontSize,'opacity': 0, 'font-family': fontFamily})
.getBBox()
.width;
var point = (Math.PI*radius - length*fontSpacing)/2;
JSFiddle:http://jsfiddle.net/zorza/k8vBy/3/
有人能指出我正确的方向吗?
答案 0 :(得分:0)
最简单的方法是,恕我直言,创建额外的辅助路径,将其提高一半的文本大小。 http://jsfiddle.net/p84VQ/
另外,我发现定义一个圆然后以指定的角度获得点会更方便:
var Circle = function(cx, cy, r) {
return function (a) {
return {
x: cx + r*Math.sin(Math.PI*-a/180),
y: cy - r*Math.cos(Math.PI*-a/180)
}
}
};