Also, das Problem tatsächlich ist, wie Zeilenumbruch in HTML5-Canvas zu tun:
Das ist alles für die Umwandlung einige Standard-HTML-Elemente, die Text halten und/oder ein Foto in eine HTML5-Leinwand. Und leider ist die '.fillText()' Methode nicht schlau genug, um ein Stück Text für mich zu brechen, so muss ich "manuell" jede Zeile erkennen.
Was Sie tun könnten, ist measureText
nacheinander Wort hinzufügen. Messen Sie das erste Wort, und wenn es zur Breite Ihres Containers passt (ctx2d.measureText(words).width <= containerWidth
), dann können Sie ein anderes Wort hinzufügen und erneut messen. Bis die Wortkette nicht passt. Wenn nicht - müssen Sie fillText
in der nächsten Zeile.
Wie bei den manuell eingeführten Zeilenumbrüchen, werden sie in HTML, entweder durch \n
oder \r
Zeichen in Textbereichen oder durch HTML-Elemente, wie <br \>
spezifisch dargestellt. Bevor Sie den Text messen, sollten Sie ihn daher nach Absätzen aufteilen.
In Textbereiche:
var paragraphs = textarea.value.split('\n');
In nicht-Formelemente:
var paragraphs = [];
// getting all <p> and elements in a typical HTML element
// as well as individual text nodes (they are just DOM-nodes),
// separated by <br /> elements
var innerNodes = nonFormElement.childNodes;
for (var i = 0, len = innerNodes.length; i += 1) {
// if a sub-element has some text in it,
// add the text to our list
var content = innerNodes[i].textContent;
if (content) {
paragraphs.push(content);
}
}
[. Diese eine Hilfe sein könnte] (http://stackoverflow.com/questions/320184/how- zu verhindern-lang-Wörter-von-breaking-my-Div) – xan
Oder http://StackOverflow.com/Questions/4719777/Finding-Line-Breaks-in-textarea-that-Isword-wrapping-arabic- Text – Theo
Was versuchen Sie am Ende zu erreichen? – katspaugh