Ist es möglich, die Breite und Höhe eines HTML5- canvas
Elements festzulegen ?
Der übliche Weg ist der folgende:
<canvas id="canvas" width="300" height="300"></canvas>
Die canvas
DOM - Element hat , .height
und .width
Eigenschaften , die entsprechen den height="…"
und width="…"
Attributen. Setzen Sie sie im JavaScript-Code auf numerische Werte, um die Größe Ihrer Zeichenfläche zu ändern. Beispielsweise:
var canvas = document.getElementsByTagName('canvas')[0];
canvas.width = 800;
canvas.height = 600;
Beachten Sie, dass dies die Leinwand löscht, obwohl Sie mit folgen sollten ctx.clearRect( 0, 0, ctx.canvas.width, ctx.canvas.height);
, um die Browser zu behandeln, die die Zeichenfläche nicht vollständig löschen. Sie müssen alle Inhalte neu zeichnen, die nach der Größenänderung angezeigt werden sollen.
Es sei weiter bemerkt , dass die Höhe und Breite sind die logische Leinwand Maße verwenden zum Ziehen und ist verschieden von den style.height
und style.width
CSS Attributen. Wenn Sie die CSS-Attribute nicht festlegen, wird die intrinsische Größe der Zeichenfläche als Anzeigegröße verwendet. Wenn Sie die CSS-Attribute festlegen und diese sich von den Canvas-Abmessungen unterscheiden, wird Ihr Inhalt im Browser skaliert. Beispielsweise:
// Make a canvas that has a blurry pixelated zoom-in
// with each canvas pixel drawn showing as roughly 2x2 on screen
canvas.width = 400;
canvas.height = 300;
canvas.style.width = '800px';
canvas.style.height = '600px';
Sehen Sie sich dieses Live-Beispiel einer Leinwand an, die um das Vierfache vergrößert wird.
$('#mycanvas').attr({width:400,height:300}).css({width:'800px',height:'600px'});
Wenn die visuelle Größe der Pixelgröße entsprechen soll, legen Sie niemals die Stile, sondern nur die Attribute fest.Eine Leinwand hat zwei Größen, die Größe der Pixel in der Leinwand (Backingstore oder DrawingBuffer) und die Anzeigegröße. Die Anzahl der Pixel wird mithilfe der Canvas-Attribute festgelegt. In HTML
Oder in JavaScript
Davon getrennt sind die Breite und Höhe des CSS-Stils der Leinwand
In CSS
Oder in JavaScript
Der wohl beste Weg, eine Leinwand mit 1x1 Pixel zu erstellen, besteht darin, IMMER CSS zu verwenden zu verwenden, um die Größe auszuwählen, und dann ein kleines Stück JavaScript zu schreiben, damit die Anzahl der Pixel dieser Größe entspricht.
Warum ist das der beste Weg? Weil es in den meisten Fällen funktioniert, ohne dass Code geändert werden muss.
Hier ist eine vollständige Fensterfläche:
Code-Snippet anzeigen
Und hier ist eine Leinwand als Float in einem Absatz
Code-Snippet anzeigen
Hier ist eine Leinwand in einem großen Bedienfeld
Code-Snippet anzeigen
Hier ist eine Leinwand als Hintergrund
Code-Snippet anzeigen
Da ich die Attribute nicht festgelegt habe, hat sich in jedem Beispiel nur das CSS geändert (was die Zeichenfläche betrifft).
Anmerkungen:
quelle
Vielen Dank! Schließlich habe ich das Problem mit unscharfen Pixeln mit diesem Code gelöst:
<canvas id="graph" width=326 height=240 style='width:326px;height:240px'></canvas>
Mit dem Hinzufügen des 'halben Pixels' wird der Trick gelöst, um Linien zu verwischen.
quelle
Der beste Weg, es zu tun:
quelle