拉法尔处理案文的能力是绝对可怕的。 我最近不得不为一个项目做一些模拟,我最后使用超文本5管线制作图像,然后将图像装入我的项目。
因此,你在Raphael制造了你的声音,然后,你想用你在其中的描述来塑造一个形象:
var width = myRect.getBBox().width
var height = myRect.getBBox().height
var canvas = jQuery("<canvas width="+width+"px height="+height+"px />");
var context = canvas[0].getContext("2d");
context.font = "10pt Calibri ";
context.textAlign = "left";
context.textBaseline = "top";
context.fillText("this is text", xPos, yPos);
之后,你希望将其移入拉法尔:
var img = canvas[0].toDataURL("image/png"); //turns the canvas object into a png and returns the dynamic url
var bb = myRect.getBBox();
paper.image(img,bb.x,bb.y,300,400)
它不是世界上最容易的解决办法,但我认为你发现其他选择并不难处理。
Other options include
var description = paper.text(0,0,"this is text");
which may work better for you, but if you re doing any thing with zooming in and out, 甚至 possibly dragging objects, you will have a hard time.
至于你增加标记,你很可能需要一种像你这样的功能。
function addMarker(x,y){
var marker = paper.set();
marker.push(
paper.rect(x,y,5,20).attr({fill:"#000"}),
paper.rect(x,y,10,5).attr({fill:"#000"}),
);
}
and you ll want a click function as well, something like
$("paper").click(function(e){
addMarker(e.offsetX,e.offsetY)
});
我希望这有助于一些人。 如果你们需要更多的帮助,会自由发表意见。
编辑:
为消除甲型六氯环己烷元素,你可以使用
myElement.remove();
甚至
myElement.hide();
编辑:
我认为,你也许一直在寻找一个投入领域。 这正是Raphael可以处理的事情。 因此,你不得不做一些工作。
如果你建立一个投入领域,然后将它绝对置于你的拉法尔方案之上,你就可以做到这一点。
var textbox = $("<textarea/>");
textbox.css({"z-index" : 2, "position" : "absolute"});
textbox.css("left",myRaphaelElement.getBBox().x)
textbox.css("top",myRaphaelElement.getBBox().y)
$("body").append(textbox)
并且想象你们会再次希望用户能够挽救他们撰写的内容。 这里是你 add子的 add子,做像你这样的事情。
button.onclick(function(){
// write code here that involves the bit i wrote earlier in my post
// that takes textbox.val() as your text.
});
更好?