Hallo zusammen,
folgende Thematik.
Ich habe ein kleinen "Editor" in Form einer Canvas-Arbeitsfläche gebastelt, in welchem Kunden ihre Inhalte, welche dann auf einen TV-Gerät gespiegelt werden, bearbeiten können.
Die Auflösung der TV-Geräte betragen alle 1920x1080 (FullHd).
Der Ablauf im Editor ist wie folgt ... der Kunde kann zwischen verschiedenen Hintergründen wählen und fügt dann Text oder Bilder hinzu. Diese kann er innerhalb des Editors verschieben. Das Skalieren habe ich derzeit deaktiviert. Desweiteren lassen sich vordefinierte Schriftarten und Größen auswählen.
Ich habe das Canvas auf die hälfte skaliert, damit der Kunde kein FullHd-Monitor benötigt um den Editor vernünftig benutzen zu können.
Das Problem welches ich habe ist, dass der Text nicht exakt an der Position landet wie man es im Editor vorgegeben hat. Das CSS habe ich geprüft. Es pfuscht kein Padding oder Margin rein.
Hier ein Beispiel ....
Canvas-Editor:
Ich habe hier bewusst die Texte entsprechend positioniert.
Das Ergebnis im Frontend (reine HTML-Ausgabe) sieht so aus:
Man sieht das die Schrift nicht an der korrekten Stelle ist und auch leicht unterschiedlich dargestellt wird.
Der Text ist im Canvas nicht auf FETT gestellt!
Die Positionen speichere ich aus dem Canvas heraus in dem ich die Objekte durchlaufe und entsprechend Speicher. Für die Position nehme ich vom jeweiligen Objekt das .left und .top raus.
Hier noch ein paar Daten.
"Lecker Fleisch"-Objekt:
Canvas initialisierung:
Im Frontend nehme ich die ganzen Werte dann wieder *2 um den ScaleRatio auszugleichen.
Falls euch was fehlt ... sagt bescheid ...
Danke schon mal.
folgende Thematik.
Ich habe ein kleinen "Editor" in Form einer Canvas-Arbeitsfläche gebastelt, in welchem Kunden ihre Inhalte, welche dann auf einen TV-Gerät gespiegelt werden, bearbeiten können.
Die Auflösung der TV-Geräte betragen alle 1920x1080 (FullHd).
Der Ablauf im Editor ist wie folgt ... der Kunde kann zwischen verschiedenen Hintergründen wählen und fügt dann Text oder Bilder hinzu. Diese kann er innerhalb des Editors verschieben. Das Skalieren habe ich derzeit deaktiviert. Desweiteren lassen sich vordefinierte Schriftarten und Größen auswählen.
Ich habe das Canvas auf die hälfte skaliert, damit der Kunde kein FullHd-Monitor benötigt um den Editor vernünftig benutzen zu können.
Das Problem welches ich habe ist, dass der Text nicht exakt an der Position landet wie man es im Editor vorgegeben hat. Das CSS habe ich geprüft. Es pfuscht kein Padding oder Margin rein.
Hier ein Beispiel ....
Canvas-Editor:

Ich habe hier bewusst die Texte entsprechend positioniert.
Das Ergebnis im Frontend (reine HTML-Ausgabe) sieht so aus:

Man sieht das die Schrift nicht an der korrekten Stelle ist und auch leicht unterschiedlich dargestellt wird.
Der Text ist im Canvas nicht auf FETT gestellt!
Die Positionen speichere ich aus dem Canvas heraus in dem ich die Objekte durchlaufe und entsprechend Speicher. Für die Position nehme ich vom jeweiligen Objekt das .left und .top raus.
Hier noch ein paar Daten.
"Lecker Fleisch"-Objekt:
- i
- __corner:0
- __dimensionAffectingProps:Object
- __eventListeners:Object
- __isMousedown:false
- __lastClickTime:1485428512405
- __lastIsEditing:false
- __lastLastClickTime:1485428359646
- __lastPointer:Object
- __lastSelected:false
- __lineHeights:Array[1]
- __lineWidths:Array[1]
- __mousedownX:414.5
- __mousedownY:245
- __newClickTime:1485428512405
- __skipDimension:false
- __widthOfSpace:Array[0]
- _cacheCanvas:canvas
- _cacheContext:CanvasRenderingContext2D
- _cacheProperties:Object
- _controlsVisibility:Object
- _isMeasuring:false
- _textLines:Array[1]
- absoluteCoords:Object
- active:true
- cacheHeight:191
- cacheWidth:388
- canvas:i
- ctx:CanvasRenderingContext2D
- cursorOffsetCache:Object
- dirty:false
- fill:"#ffffff"
- fontFamily:"Yanone Kaffeesatz"
- fontSize:60
- fontStyle:""
- fontWeight:""
- hasControls:false
- height:67.79999999999998
- isMoving:false
- left:360
- minScaleLimit:0.0037861589707258434
- mouseMoveHandler
)
- oCoords:Object
- scaleX:1
- scaleY:1
- selected:true
- skewX:0
- skewY:0
- styles:Object
- text:"Lecker Fleisch!"
- textDecoration:""
- top:229
- width:264.1199188232422
- zoomX:1
- zoomY:1
- __proto__:i
Canvas initialisierung:
Code:
var resWidth = 1920;
var resHeight = 1080;
var scaleRatio = 0.5;
var canvas = new fabric.Canvas(document.getElementById('cixeditor'));
canvas.stateful = false;
canvas.setHeight(resHeight*scaleRatio);
canvas.setWidth(resWidth*scaleRatio);
fabric.Image.fromURL('/uploads/backgrounds/<?=$background->uid.$background->file_ext?>', function(img) {
canvas.backgroundImage = img;
canvas.backgroundImage.width = resWidth*scaleRatio;
canvas.backgroundImage.height = resHeight*scaleRatio;
canvas.renderAll();
});
Im Frontend nehme ich die ganzen Werte dann wieder *2 um den ScaleRatio auszugleichen.
Falls euch was fehlt ... sagt bescheid ...
Danke schon mal.