Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当控件边框到达画布末端时,Fabric JS ITEXT自动换行_Javascript_Html_Canvas_Fabricjs - Fatal编程技术网

Javascript 当控件边框到达画布末端时,Fabric JS ITEXT自动换行

Javascript 当控件边框到达画布末端时,Fabric JS ITEXT自动换行,javascript,html,canvas,fabricjs,Javascript,Html,Canvas,Fabricjs,我使用fabric js ITEXT在画布上书写。当我到达画布末端时,文本会穿过画布边界,而不会显示给用户 我需要包装我搜索过的文本,但没有得到任何正确的解决方案 我也在用fabric.Textbox代替IText,但还是有同样的问题 请建议任何解决方案……要获得单词包装,您必须重写textbox方法。 看看这把小提琴,寻找灵感: fabric.Textbox.prototype.\u wrapLine=function(ctx,text,lineIndex){ var线宽=0, 行=[],

我使用fabric js ITEXT在画布上书写。当我到达画布末端时,文本会穿过画布边界,而不会显示给用户

我需要包装我搜索过的文本,但没有得到任何正确的解决方案

我也在用fabric.Textbox代替IText,但还是有同样的问题


请建议任何解决方案……

要获得单词包装,您必须重写textbox方法。 看看这把小提琴,寻找灵感:

fabric.Textbox.prototype.\u wrapLine=function(ctx,text,lineIndex){
var线宽=0,
行=[],
行=“”,
单词=文本。拆分(“”),
单词=“”,
字母=“”,
偏移量=0,
中缀=“”,
字宽=0,
infixWidth=0,
letterWidth=0,
最大字宽=0;
for(var i=0;ithis.width){
行+=中缀;
变量wordLetters=单词分割(“”);
while(wordlets.length){
letterWidth=该值。\u获取字符宽度(ctx,字字母[0],行索引,偏移量);
如果(线宽+字体宽度>此宽度){
推(线);
行=“”;
线宽=0;
}
line+=wordLetters.shift();
offset++;
线宽+=字体宽度;
}
单词='';
}否则{
线宽+=字宽;
}
如果(线宽>=this.width&&line!=''){
推(线);
行=“”;
线宽=字宽;
}
如果(行!=''| i===1){
行+=中缀;
}
行+=字;
偏移量+=字长;
infixWidth=此._measureText(ctx、中缀、行索引、偏移);
offset++;
//跟踪最大的单词
if(wordWidth>largestWordWidth&&!this.breakWords){
最大字宽=字宽;
}
}
i&行。推(行);
if(最大字宽度>此.dynamicMinWidth){
this.dynamicMinWidth=largestWordWidth;
}
回流线;
}
var longText=‘Lorem ipsum Door sit amet,Concertetur Adipsicing Elite。埃尼亚的孕妇在港分娩。无论是在欧洲还是在欧洲,无论是在国内还是在国内,无论是在国外还是在国外,都是如此。猫科动物门,维韦拉,金樱子。这是一个巨大的挑战,是一个巨大的挑战,是一个巨大的挑战,是一个巨大的挑战。猫科动物,寄居地,温文尔雅。纳勒姆·拉奥里特、勒勒姆·维塔·坦帕斯·瓦普塔特、前智者、前同侪名言。康格的菲利斯。Nunc aliquam sapien eu fringilla sodales。他是一个年轻人。Mauris vitae suscipit nisi,是pulvinar justo。埃涅亚非坦普尔尼斯。尤伊斯莫·福西布斯。Donec venenatis,justo eget posuere Fentum,lorem nisl pharetra eros,sed convallis enim odio eget ligula。semper magna的Suspendisse。奥古斯港奥迪奥·奎斯港的萨皮安·福西布斯号。在faucibus中,Interdum和malesuada在第一次同侧前就出名了。这是一个很好的例子。努克·乌尔纳·乌尔纳,不受尊敬的贵人,伟大的上帝。暂时的,暂时的。生活是虚无的,生活是多余的,生活是美好的。在elit sed massa maximus finibus的Nullam。非舌苔枕侧耳。ultricies tellus congue eros lobortis,一种节杖。不受饮食影响的Phasellus iaculis,非malesuada metus varius et.Morbi laoreet velit ut auctor pulvinar。自由元素尊贵的馆长,临时权杖。在埃吉特·康塞特图尔·尼布;
var canvas=fabric.canvas('c');
var breakingTextbox=newfabric.Textbox(longText{
宽度:300,
关键词:真的
});
canvas.add(breakingTextBox)


我已经使用了您的代码,它工作正常,但唯一的问题是,当我们单击它们时,光标指向文本的末尾,我们使用空格指向它们。有没有解决这个问题的方法?如何管理超出画布边界的对象的高度?这段代码工作正常,但它有一个与光标位置相关的问题,有时它显示在错误的位置。你解决了这个问题吗?我没有注意到这个缺陷。你在什么地方拉小提琴了吗?你好,AndreaBogazzi,你检查过我的代码了吗?当文本换行时,光标位置出现问题,它显示在错误的位置,而不是文本的末尾。