ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Canvas における色の指定
HTML5 の Canvas API で図形に色を付けるには、2 つのプロパティを使い分けます。
| プロパティ | 用途 |
|---|---|
ctx.strokeStyle | 図形の枠線 (ストローク) の色 |
ctx.fillStyle | 図形の塗りつぶしの色 |
どちらも CSS と同じ形式の文字列、またはグラデーション / パターンオブジェクトを受け取ります。
色の表現形式 (すべて CSS 互換)
const canvas = document.getElementById("c");
const ctx = canvas.getContext("2d");
// 16 進
ctx.fillStyle = "#ff0000";
ctx.fillStyle = "#f00";
// rgb() / rgba()
ctx.fillStyle = "rgb(255, 0, 0)";
ctx.fillStyle = "rgba(255, 0, 0, 0.5)";
// hsl() / hsla()
ctx.fillStyle = "hsl(0, 100%, 50%)";
// 色名
ctx.fillStyle = "tomato";
// 塗ってみる
ctx.fillRect(10, 10, 100, 60);
透明度 (globalAlpha)
ctx.globalAlpha は0.0 (完全透明) 〜 1.0 (不透明) の値で、その後のすべての描画にかかります。色側で rgba() の透明度も指定した場合は掛け算されます。
// 半透明な赤い四角を 2 枚重ねる
ctx.globalAlpha = 0.5;
ctx.fillStyle = "red";
ctx.fillRect(20, 20, 100, 100);
ctx.fillStyle = "blue";
ctx.fillRect(60, 60, 100, 100);
// 描画後は元に戻すのが基本
ctx.globalAlpha = 1.0;
線形グラデーション
createLinearGradient(x0, y0, x1, y1) で開始点と終了点を直線で結び、その軸に沿ったグラデーションを作ります。色の中継地点は addColorStop(offset, color) で追加します。
// 横方向 (左→右) のグラデーション
const grad = ctx.createLinearGradient(0, 0, 300, 0);
grad.addColorStop(0, "red");
grad.addColorStop(0.5, "yellow");
grad.addColorStop(1, "green");
ctx.fillStyle = grad;
ctx.fillRect(0, 0, 300, 100);
| 引数 | 意味 |
|---|---|
x0, y0 | グラデーションの開始座標 |
x1, y1 | グラデーションの終了座標 |
offset | 0.0 (開始) 〜 1.0 (終了) の位置 |
color | その位置の色 (CSS 表記) |
円形 (放射状) グラデーション
createRadialGradient(x0, y0, r0, x1, y1, r1) は2 つの円を指定し、その間で放射状にグラデーションを作ります。一般的には内側を小さい円、外側を大きい円にします。
// 中心が白、外側が青の球体風
const rgrad = ctx.createRadialGradient(150, 100, 10, 150, 100, 80);
rgrad.addColorStop(0, "white");
rgrad.addColorStop(0.7, "skyblue");
rgrad.addColorStop(1, "navy");
ctx.fillStyle = rgrad;
ctx.beginPath();
ctx.arc(150, 100, 80, 0, Math.PI * 2);
ctx.fill();
| 引数 | 意味 |
|---|---|
x0, y0, r0 | 内側の円 (中心と半径) |
x1, y1, r1 | 外側の円 (中心と半径) |
パターン (画像の繰り返し塗り)
色やグラデーションだけでなく、画像で塗りつぶすこともできます。
const img = new Image();
img.src = "tile.png";
img.onload = () => {
const pattern = ctx.createPattern(img, "repeat");
ctx.fillStyle = pattern;
ctx.fillRect(0, 0, 400, 300);
};
// repeat / repeat-x / repeat-y / no-repeat
よく使うパターンまとめ
| やりたいこと | API |
|---|---|
| 単色塗り | fillStyle = "#色" |
| 枠線色 | strokeStyle = "#色" |
| 半透明描画 | globalAlpha = 0.5 |
| 線形グラデーション | createLinearGradient() |
| 円形グラデーション | createRadialGradient() |
| 画像で塗りつぶし | createPattern() |
FAQ
Q: グラデーションは使い回せる?
A: 生成した CanvasGradient オブジェクトは何度でも代入できます。座標が固定なので、サイズが変わる場合はサイズ変更時に作り直してください。
Q: globalAlpha と rgba() の透明度どちらを使う?
A: 個別の描画に対する透明度は rgba()、画面全体や一連の描画にまとめてかけたいなら globalAlpha が便利です。
Q: 16 進と CSS 色名どちらが速い?
A: 体感差はほぼゼロ。可読性とコードルールで選んで構いません。
Q: addColorStop の offset を 0〜1 の外に指定したら?
A: 仕様上は例外 (IndexSizeError) が投げられます。範囲内に収めてください。
Q: 描画後にグラデーションを動的に変えたい
A: グラデーションオブジェクトを再生成し、再度 fillStyle に代入して再描画します。途中で色を入れ替えるような直接編集 API はありません。
典型的な落とし穴
| 症状 | 原因 / 対処 |
|---|---|
| 色が反映されない | fillStyle をfillRect の前に設定する |
| 描画後の塗りが消える | 背景全体を clearRect でクリアしている可能性 |
| 線がぼやける | HiDPI 対応: devicePixelRatio 倍の Canvas サイズを用意する |
| グラデが座標と合わない | Canvas のリサイズ後に再生成していない |
| 透明度が掛け合わさる | globalAlpha と rgba() の両方を指定している |
まとめ
Canvas における色指定は、strokeStyle / fillStyle と globalAlpha、それにグラデーション / パターンを組み合わせれば、ほぼすべての見た目を表現できます。座標と色の関係を把握し、再描画のたびに必要なオブジェクトを再生成する基本を押さえれば、複雑なビジュアル表現も難なく構築できます。
関連
- Canvas のパス (
beginPath/moveTo/lineTo/arc) fillRect/strokeRect— 矩形の塗り・枠線globalCompositeOperation— 合成モード
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?