Ich habe ein Bild und überlagert eine Leinwand darüber, so dass ich "auf" das Bild zeichnen kann, ohne das Bild selbst zu ändern.Wie prozentuale Breite in HTML-Canvas (keine CSS)
<div class="needPic" id="container">
<img id="image" src=""/>
<!-- Must specify canvas size in html -->
<canvas id="sketchpad" width="70%" height="60%">Sorry, your browser is not supported.</canvas>
</div>
ich die Breite und Höhe in Pixeln in der obigen Leinwand Zeile angeben kann und es funktioniert super, aber ich brauche diese dynamisch auf Bildschirmgröße Size-Basis (hat als Tabletten als auch auf kleine Smartphones arbeiten). Wenn ich versuche, den Prozentsatz wie oben gezeigt einzugeben, wird er als Pixel interpretiert. So wird die Leinwand 70px breit und 60 px groß.
Aus irgendeinem Grund kann ich nicht die Leinwand in der CSS Größe so aussehen wie ich es im HTML tun muss. Um zu verdeutlichen, wenn ich versuche, die Canvas-Dimensionen im CSS zu spezifizieren, ändern sie nicht wirklich die Größe des Canvas. Es scheint, als ob das Bild irgendwie interferiert.
Jede Hilfe wäre willkommen.
Update: Wenn ich <canvas id="sketchpad" style="width:70%;height:60%;"></canvas>
dann wird standardmäßig auf eine Höhe von 150px und eine Breite von 300 Pixeln (unabhängig vom Gerät) und dann Strecken die Leinwand, um die div zu passen. Ich setze das div auf 60% Breite und 60% Höhe im CSS, also dehnt sich die Leinwand aus, um das zu füllen. Ich bestätigte dies durch Protokollieren der canvas.width vs canvas.style.width - canvas.width war 300px und canvas.sytle.width war '60% '(vom übergeordneten div). Dies bewirkt, dass einige wirklich seltsame pixelation und Zeicheneffekte ...
Vielleicht können Sie CSS in Ihrem HTML-Elemente hinzufügen, wie: '
@FabSa, ich habe es gerade versucht und es hat etwas getan, aber nicht wie erwartet. Siehe Update oben. –
Wie Sie festgestellt haben, streckt/verkleinert der Browser beim Festlegen des Stils nur die Leinwand, aber ändert nicht den Wert für die Punkte pro Zoll für die Leinwand. Sie müssen die Dimensionen (zusammen mit dem Stil) aus dem Skript festlegen. Sie können sich einen impactjs doc ansehen: http://impactjs.com/documentation/impact-on-mobile-platforms (siehe Abschnitt "Always Render in der nativen Auflösung", es könnte Ihnen helfen, das Problem besser zu verstehen) . – akonsu