[解決済み】HTML5でのキャンバスの幅と高さについて
2022-04-21 10:06:31
質問
HTML5 の
canvas
要素を使用できますか?
通常の方法では、次のようになります。
<canvas id="canvas" width="300" height="300"></canvas>
解決方法は?
その
canvas
DOM要素には
.height
と
.width
プロパティに対応する
height="…"
と
width="…"
属性があります。JavaScriptのコードでこれらを数値に設定すると、キャンバスのサイズが変更されます。例えば
var canvas = document.getElementsByTagName('canvas')[0];
canvas.width = 800;
canvas.height = 600;
これはキャンバスをクリアすることに注意してください。
ctx.clearRect( 0, 0, ctx.canvas.width, ctx.canvas.height);
を使用して、キャンバスを完全に消去しないブラウザに対処します。サイズ変更後に表示させたいコンテンツがあれば、再描画する必要があります。
さらに、高さと幅は描画に使用される論理的なキャンバスの寸法であり、以下のことに注意してください。
異なる
とは異なり
style.height
と
style.width
CSS属性で指定します。CSS属性を設定しない場合、キャンバスの固有サイズが表示サイズとして使用されます。CSS属性を設定し、それがキャンバスの寸法と異なる場合、コンテンツはブラウザで拡大縮小されます。例えば
// 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';
参照 このライブの例 を4倍に拡大したキャンバスを表示します。
var c = document.getElementsByTagName('canvas')[0];
var ctx = c.getContext('2d');
ctx.lineWidth = 1;
ctx.strokeStyle = '#f00';
ctx.fillStyle = '#eff';
ctx.fillRect( 10.5, 10.5, 20, 20 );
ctx.strokeRect( 10.5, 10.5, 20, 20 );
ctx.fillRect( 40, 10.5, 20, 20 );
ctx.strokeRect( 40, 10.5, 20, 20 );
ctx.fillRect( 70, 10, 20, 20 );
ctx.strokeRect( 70, 10, 20, 20 );
ctx.strokeStyle = '#fff';
ctx.strokeRect( 10.5, 10.5, 20, 20 );
ctx.strokeRect( 40, 10.5, 20, 20 );
ctx.strokeRect( 70, 10, 20, 20 );
body { background:#eee; margin:1em; text-align:center }
canvas { background:#fff; border:1px solid #ccc; width:400px; height:160px }
<canvas width="100" height="40"></canvas>
<p>Showing that re-drawing the same antialiased lines does not obliterate old antialiased lines.</p>
関連
-
[解決済み】CSSの背景画像が表示されない。
-
[解決済み】divの高さを画面の残りスペースで埋めるようにする
-
[解決済み] css画像が表示されない
-
[解決済み] HTML5のlocalStorageにオブジェクトを格納する方法は?
-
[解決済み] CSSでテキストや画像の背景を透明にするには?
-
[解決済み] 再描画のためにキャンバスをクリアする方法
-
[解決済み] HTML要素の実際の幅と高さを取得するにはどうすればよいですか?
-
[解決済み] HTML5でfloat入力タイプはありますか?
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
-
[解決済み】HTML5入力のプレースホルダの色をCSSで変更する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】位置固定が機能しない
-
[解決済み】WebページでWindows 95のフォントを使用する
-
[解決済み] CSS color vs. background-color vs. background?
-
[解決済み] 絶対位置が機能しない
-
[解決済み] CSS - display: none; が機能しない
-
[解決済み] 高さを固定したBootstrapパネルボディの作り方
-
[解決済み] ionic 4でion-buttonをセンタリングする方法は?[重複しています]
-
[解決済み] HTMLファイルへのリンクは可能ですか?
-
[解決済み] Visual Studio Code CSSエラー「空のルールセットを使用しないでください」【終了しました
-
[解決済み] キャンバス上のマウスの実位置