我已经找到了如何使用Raphael JS拖动对象。
但现在,我想知道是否可以调整动态打印文本的大小,并使用Raphael JS获得此“对象”的新宽度/高度。
以下是我想要完成的第一个观点:
$(function() {
var R = Raphael("holder", 400, 400);
$("#typetext").keyup(function() {
var textValue = $(this).val();
R.clear();
var c = R.print(100, 100, textValue, R.getFont("Arial"), 60).attr({
fill: "#ff0000",
cursor: "move"
});
var start = function() {
this.odx = 0;
this.ody = 0;
this.animate({
"fill-opacity": 0.2
}, 500);
},
move = function(dx, dy) {
this.translate(dx - this.odx, dy - this.ody);
this.odx = dx;
this.ody = dy;
},
up = function() {
this.animate({
"fill-opacity": 1
}, 500);
};
c.drag(move, start, up);
});
});
非常感谢任何建议!
编辑:This fiddle让我知道我需要做什么,但有印刷文字。
EDIT2:打印文本由SVG结构中的路径定义,似乎无法获得路径的宽度和高度......
答案 0 :(得分:2)
不可能“重新打印”,就像在print
使用的路径生成例程中提供不同的像素高度一样。但是,如果您有兴趣将文本缩放到某些合理边界内,则可以获取路径的边界框,然后对其进行缩放以确保它落在画布的宽度和高度范围内。
var bbox = c.getBBox();
if ( bbox.x + bbox.width > $(R.canvas).width() )
{
var scale = ( $(R.canvas).width() - bbox.x) / bbox.width;
c.scale( scale, scale, bbox.x, bbox.y );
}
功能展示here。