FabricJS의 textBackgroundColor에 패딩을 추가 할 수 없다는 것을 알고 있습니다 (패딩이 있지만 textBackgroundColor에 영향을주지 않습니다). 그래서 텍스트의 모양을 해킹하려고합니다. 패딩이 있다는 인상을주기 위해서.FabricJS 텍스트 개체에 새 줄을 추가하는 중
텍스트 개체 내의 각 줄 끝에 공백을 자동으로 추가하여이 작업을 수행하고 있습니다. 그것은 우아하지는 않지만 가까이옵니다.
그러나 1 문제에 봉착하고 내 코드가 약간 엉망이되었습니다.
이제 새 줄을 추가하면 (return을 치는) 예상대로 작동하지 않습니다.
커서가 문자 뒤에 나타나서 새로운 행을 얻기 위해 2 회 리턴해야합니다. 그러면 빈 줄이 추가됩니다.
무엇이 잘못 되었나요? 어떻게 다시 되돌릴 수 있습니까?
빈 줄 버그를 해결할 줄 알았는데 줄에 하나 이상의 문자가 포함되어있는 경우에만 공백을 추가하는 것이 좋겠지 만이를 달성 할 수 없었습니다.
는 여기에 내가 패딩을 얻기 위해 텍스트에 텍스트를 추가 생각하지 않습니다 내 Fiddle
JS
var canvas = new fabric.Canvas('mycanvas');
var activeObject = canvas.getActiveObject(str1);
var objects = canvas.getObjects();
var concatstr = '';
var res;
var str;
var str1;
var abcd;
canvas.on('text:changed', function() {
var concatstr = '';
var activeObject = canvas.getActiveObject();
var txtsa = jQuery.trim(activeObject.text);
values = txtsa.split('\n');
jQuery.each(values, function(index, val) {
jQuery.trim(val);
concatstr += " " + val + " " + "\\n";
});
var temp = concatstr.replace(/ +/g, ' ');
var final = temp.replace(/\\n/g, "\n");
activeObject.setText(final);
});
var text1 = new fabric.IText(' Text ', {
top: 100,
left: 100,
textBackgroundColor: '#000',
fontSize: 30,
lineHeight: 0.9,
fill: 'white',
fontWeight: 'bold',
textAlign: 'center',
fontFamily: 'Helvetica Nue, Helvetica, Sans-Serif, Arial, Trebuchet MS',
});
canvas.add(text1);
canvas.renderAll();
이것은 내가 시도한 경로입니다.하지만 당신만큼 우아하지는 않지만 textBackgroundColor가 작동하는 것과 비슷한 텍스트 문자 (예 : 내 피들)를 배경색으로 채우려합니다.하지만 패딩이 있습니다. 이 솔루션은 backgroundColor를 사용하여 전체 텍스트 객체 뒤에 사각형을 추가합니다. – GoldenGonaz
Simialr to this https://s9.postimg.org/4vly2wopr/extext.jpg – GoldenGonaz