Schreiben Sie text auf Leinwand mit hintergrund
Ist es möglich zu schreiben Bild auf Leinwand und schreiben von text mit hintergrund?
Zum Beispiel so:
Könnten Sie mehr info über das, was Sie versucht haben?
Ist es das, was Sie zu tun versuchen? jsfiddle.net/m1erickson/QDDcU
Ist es das, was Sie zu tun versuchen? jsfiddle.net/m1erickson/QDDcU
InformationsquelleAutor rask | 2013-09-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
, Wie der text funktioniert in Leinwand
Leider Nein, Sie kann nicht produzieren, text mit hintergrund mit dem text Methoden - nur die Füllung oder Kontur des Textes selbst.
Dies ist, weil die Zeichen aus dem schriftart (font) werden in einzelnen Formen oder Pfade, wenn Sie wollen, in den hintergrund, es wäre der innere Teil des symbols an sich (den Teil, den Sie sehen, wenn Sie gefüllt ist). Es gibt keine Ebene für die black-box (das Rechteck, das die Glyphe passt) die Glyphe nutzt neben der geometrischen position, so brauchen wir, um eine Art black-box-und Lager selbst.
Auf dem alten computer-Systemen die meisten Schriften binäre Schrift, die wo einstellen, oder deaktivieren eines Pixel. Statt nur löschen des Hintergrunds könnte man entscheiden, um eine hintergrund statt. Dies ist nicht der Fall mit Vektor-Schriften, die standardmäßig (in einem browser hat direkten Zugriff auf die Glyphen-geometrie und kann deshalb liefern einen hintergrund in dieser Art und Weise).
Erstellen von benutzerdefinierten hintergrund
Um ein Hintergrundbild erstellen, die Sie brauchen würde, um es zu zeichnen, zuerst mit anderen Mitteln wie Formen oder ein Bild.
Beispiele:
oder
ziehen Sie dann den text oben:
Können Sie
measureText
um herauszufinden, die Breite des Textes (in der Zukunft auch die Höhe: Aufstieg + Abstieg) und verwenden, dass als Grundlage:Können Sie wickeln Sie das alles in einer Funktion. Die Funktion hier ist basic, aber Sie können erweitern es mit Farb-und hintergrund-Parameter als auch als Polsterung etc.
ONLINE DEMO HIER
Nur beachten, dass diese Art der "Messung" Höhe ist nicht korrekt. Messen Sie die Höhe der schriftart, indem Sie eine temporary-div/span-element und erhalten die berechneten Stil aus, wenn die schriftart und der text gesetzt ist.
leider nicht standardmäßig. Text wird lediglich passive Pixel nach der der text gezeichnet wird, genauso wie jede andere Form oder ein Bild, so gibt es keinen Unterschied auf die Leinwand. Sie müssten, um alle implementieren die Logik selbst zu behandeln text als Objekt (Lage, Größe, Auswahl, Hervorhebung, festigen etc.). IMHO gibt es nichts falsch mit einem input-element auf der Oberseite, wenn diese benötigt wird, aber auch das würde erfordern eine benutzerdefinierte Logik zu arbeiten, sowie mit canvas.
Verwenden Sie die fabric.js alle demo-bezogene Leinwand ist hier fabricjs.com @rask
Nice one. Sie können auch fügen Sie etwas Polsterung an den hintergrund, so dass es schön deckt die gesamte Breite und Höhe des Textes, wobei einige "weiße" Leerzeichen. Aktualisiert JSFiddle hier: jsfiddle.net/2JGHs/215
InformationsquelleAutor
Ich einfachere Lösung ist der Aufruf fillText zweimal. Zuerst wird eine Zeichenfolge von Unicode - +2588 █ was ist ein Schwarzes Rechteck wiederholt die gleiche Länge wie der text mit der Hintergrundfarbe. Und dann rufen Sie fillText normal mit der Vordergrundfarbe.
InformationsquelleAutor ToonTalk