Angenommen, ich habe eine 400x200
Canvas. Ich möchte in einem Koordinatensystem arbeiten, wo (0, 0)
ist genau in der Mitte der Leinwand und positiv y
bedeutet, up und positive x
bedeutet richtig.Canvas-Transformation verhält sich nicht wie erwartet
Also, habe ich die Transformation wie folgt:
var ctx = document.getElementById("canvas").getContext("2d");
ctx.setTransform(1, 0, 0, -1, 200, 100);
ctx.fillRect(-20, -20, 40, 40);
<canvas id="canvas" style="width: 400px; height: 200px"></canvas>
Also, wenn ich das Rechteck wie im Snippet oben füllen, würde ich erwarten, ein Quadrat in der Mitte zentriert zu sehen das Leinwandelement Beim Ausführen des obigen Snippets (im neuesten Chrome) ist das Quadrat jedoch nachweislich nicht zentriert. Warum ist das? Verarsche ich etwas über die Transformationsmatrix? Wenn ja, wie kann ich mein Ziel erreichen?
Ah, verstehe ich vollständig. Ich war mir nicht bewusst, dass es einen Unterschied zwischen den CSS-Attributen und den "nativen" Canvas-Attributen gab. Vielen Dank! – cemulate