简体   繁体   English

如何在svg.js的矩形中居中显示文本?

[英]How to center text in the rectangle in svg.js?

I'm trying to draw a rectangle with a text centered in it while having the elements grouped. 我正在尝试在将元素分组的同时绘制一个以文本为中心的矩形。 Here my code: 这是我的代码:

var draw = SVG('canvas')
var group = draw.group();

var rect = draw.rect(100,100).fill('#f09')
group.add(rect);

var text = draw.text('AAA');
text.font({anchor: 'middle', size: 30, family: 'Helvetica'});
text.move(50,50);

group.add(text);
group.move(100,100);

JSFiddle: http://jsfiddle.net/Lqw7n/2/ JSFiddle: http : //jsfiddle.net/Lqw7n/2/

The result makes no sense for me. 结果对我来说毫无意义。

I think its because you are moving the text but haven't really initially positioned it where you think. 我认为是因为您正在移动文本,但实际上并没有真正将其最初放置在您认为的位置。 So its taking a default of 0,0 then you set anchor middle so half is off the screen, and then you moved it. 因此其默认值为0,0,然后将锚定中间位置设置为一半,然后将其移出屏幕,然后将其移动。 However if you set its x,y first with the attr, it should work ok.. 但是,如果您首先使用attr设置其x,y,它应该可以正常工作。

var group = draw.group();

var rect = draw.rect(100,100).fill('#f09')
group.add(rect);

var text = draw.text('AAA').attr({x:50, y:50 });
text.font({anchor: 'middle', size: 30, family: 'Helvetica'});
group.add(text);
group.move(100,100);

updated jsfiddle here http://jsfiddle.net/Lqw7n/5/ 在这里更新了jsfiddle http://jsfiddle.net/Lqw7n/5/

instead of text.move you can use text.center like 代替text.move您可以使用text.center类的

<div id="canvas"></div>
<script type="text/javascript" src="svg.min.js"></script>
<script type="text/javascript">
var draw = SVG('canvas');

var group = draw.group();

var rect = group.rect(100, 100).fill('#f09');

var text = group.text('AAA')
.font({size: 30, family: 'Helvetica'})
.center(0.5*rect.width(), 0.5*rect.height());

group.move(100, 100);

</script>

i also replaced group.add with group.rect and group.text 我也取代group.addgroup.rectgroup.text

source: https://github.com/svgdotjs/svg.js/issues/842#issuecomment-379554588 来源: https : //github.com/svgdotjs/svg.js/issues/842#issuecomment-379554588

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM