HTML5 キャンバス軸変換、パターン塗りつぶし、グラデーション、シャドウ

黄舟
リリース: 2017-02-27 15:34:55
オリジナル
2918 人が閲覧しました


前の記事では、キャンバス上での基本的なグラフィック描画について学びました
関連する操作をいくつか見てみましょう

座標軸の変換

キャンバスのデフォルトの座標軸はブラウザの座標軸と同じです
x は正です半軸の面 右側の
正の半軸は下を向いています
しかし、キャンバスの座標軸の変換を手動で設定できます
まず、やはり「キャンバス」と「ブラシ」を取得します

<canvas id="myCanvas" width=500 height=500></canvas>
ログイン後にコピー
rreeee

まず、キャンバスに正方形を描きます

var canvas = document.getElementById(&#39;myCanvas&#39;),
    ctx = canvas.getContext(&#39;2d&#39;);
ログイン後にコピー

この図では、キャンバスの座標軸をマークしました

平行移動

座標軸を平行移動するには、translate(dx, dy)メソッドを使用します
パラメータは、x軸の平行移動距離とy軸です。軸の移動距離

ctx.fillStyle = &#39;#f40&#39;;
ctx.fillRect(100, 100, 300, 300);
ログイン後にコピー

Scale

scale(sx, sy)メソッドを使用して座標軸を拡張できます
パラメータはx軸とy軸のスケール係数です
座標も比例してスケールされます

ctx.translate(100, 100);
ctx.fillStyle = &#39;#f40&#39;;
ctx.fillRect(100, 100, 300, 300);
ログイン後にコピー

Rotate

rotate(deg)メソッドを使用して座標軸を回転させます

ctx.scale(1.2, 1.2);
ctx.fillStyle = &#39;#f40&#39;;
ctx.fillRect(100, 100, 300, 300);
ログイン後にコピー

保存と復元

座標軸を変更する前に
save()を使用して前のキャンバス座標軸を保存します
次に、restore() を使用して、座標軸を以前の外観に戻します

ctx.rotate(Math.PI/12);
ctx.fillStyle = &#39;#f40&#39;;
ctx.fillRect(100, 100, 300, 300);
ログイン後にコピー


他にも 2 つの方法があります 理解するには、座標軸を変換するだけです
setTransform(a, b, c, d, e, f)
これメソッドは変換前に座標軸をリセットします
transform(a, b, c, d, e, f)
このメソッドは前の座標軸に基づいて変換します

どちらのメソッドも変換行列に置き換えられます
a c e
b d f
0 0 1
これは CSS3 のグラフィックス変換に似ています
パラメータはそれぞれ次のことを表します: 水平スケーリング、水平傾斜、垂直傾斜、垂直傾斜、垂直スケール、水平移動、垂直移動

パターン塗りつぶし

今、私はまず、ページに画像要素を追加します

ctx.save(); //保存之前的正常坐标轴ctx.rotate(Math.PI/12);
ctx.fillStyle = &#39;#f40&#39;;
ctx.fillRect(100, 100, 300, 300);
ctx.restore();//恢复到正常坐标轴ctx.fillStyle = '#000';
ctx.fillRect(100, 100, 300, 300);
ログイン後にコピー

この画像をキャンバスに埋めることができます
createPattern(img/canvas/video, “repeat”/”no-repeat”/”repeat-x”/”repeat を使用します) -y”)

<img src="./images/lamp.gif">
ログイン後にコピー

CanvasPatternオブジェクトを返します
塗りつぶしルールを定義します
imgタグに加えて、canvas要素やvideo要素も塗りつぶすことができます。使用方法はGradientと同じです。 CSS3 のグラデーションも、線形グラデーションと放射状グラデーションに分けられます。これは、グラデーション ルール

createLinearGradient(x1, y1, x2, y2) を定義する必要があります。ある点から別の点への線形グラデーションを定義します

CanvasGradient() オブジェクトを返します

AddColorStop() を使用して定義します

0 が開始点、1 が終了点です

var img = document.getElementsByTagName(&#39;img&#39;)[0];var pt = ctx.createPattern(img, &#39;repeat&#39;);
ctx.fillStyle = pt;
ctx.fillRect(0, 0, 500, 500);
ログイン後にコピー

定義されたグラデーショングラデーション領域に表示する必要があります



放射状グラデーション

createRadialGradient(x1, y1, r1, x2, y2 , r2)

線形グラデーションと比較して、点半径パラメーターが 2 つ増えています

それ以外の場合、使用方法は同じです上記の通りこれ以上の説明は不要です
たとえば、グラデーションの同心円を描くことができます

var lGradient = ctx.createLinearGradient(0, 0, 0, 250);
lGradient.addColorStop(0, &#39;#000&#39;);
lGradient.addColorStop(1, &#39;#fff&#39;);
ctx.fillStyle = lGradient;
ctx.fillRect(0, 0, 500, 250);
ログイン後にコピー

Shadow


はCSS3のbox-shadowプロパティに似ています
キャンバスでは、影の色を定義するために
shadowColorを使用します
shadowOffsetX /Y で影のオフセットを制御します

shadowBlur で影のぼかし半径を定義します

影のバイアス シフト量は座標系変換の影響を受けません

var rGradient = ctx.createRadialGradient(250, 250, 100, 250, 250, 250);
rGradient.addColorStop(0, &#39;#fff&#39;);
rGradient.addColorStop(0.5, &#39;#000&#39;);
rGradient.addColorStop(1, &#39;#fff&#39;);
ctx.fillStyle = rGradient;
ctx.fillRect(0, 0, 500, 500);
ログイン後にコピー
fillRect を使用して描画できます影関連のプロパティを設定した後の影付きの四角形





上記は、HTML5 Canvas の座標軸の変換、パターンの塗りつぶし、グラデーションと影などの内容です。その他の関連コンテンツについては、PHP の中国語 Web サイト (www) を参照してください。 .php.cn)!

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!