canvas雑記
7405 ワード
一.canvas概要
1.1何がcanvasですか
二.canvas製図
2.1 canvasラベル
2.1.1 canvasラベル文法と属性タグ名canvasは、閉じる必要があります.ただのhtmlタグです. はwidthとheight属性を設定できますが、属性値単位はpxでなければなりません.そうでなければ無視します. 注意: CSSで幅と高さを制御しないでください.画像を引っ張り出します. canvasラベルの幅の高い属性を再設定すると、キャンバスがすべての内容を消去します. キャンバスに背景色を設定することができます.
2.1.2ブラウザの互換性の問題 ie 9以上はcanvasをサポートします.他の現代ブラウザなどは全部 をサポートします.モバイル端末の互換性がいいです.基本的に全部 が使えます. dの支持のはすべてとても良くて、3 d(webgl)ie 11はやっと支持して、その他はすべて を支持します.ブラウザが互換性がない場合は、ヒントを与えたほうがいいです. キャンバスは固定サイズのキャンバスを作成して、一つ以上の描画コンテキスト(絵筆)を公開して、レンダリングコンテキストを使って、展示する内容を描画して処理します. Canvas自身は何も描画できません.キャンバスの絵はJavaScriptを使って操作します. ContectオブジェクトはJavaScript操作Canvasのインターフェースです.
2.3.1 canvas座標系
canvasの座標体系では、左上角を原点とし、右方向をx軸正方向とし、下方向をy軸正方向とする.
2.3.2始点を描く canvasの基本的な手順のまとめ: 第一歩:コンテキストを得る=>canvasElem.get Conttext('2 d') 第二ステップ:スタート経路計画=>ctx.begingPath() 第3ステップ:移動開始点=>ctx.moveTo(x,y) 第4ステップ:描画ライン=>ctx.line To(x,y) 第5ステップ:クローズパス=>ctx.closePath() 第六ステップ:描画描画描画エッジ=>ctx.strook() html部分:
2.6.1スケーリング を回転させる.注意パラメータは、ラジアン(PI) である.角度をラジアンに変換するには、degrees*Math.PI/180式を使って計算してください. 2.6.4描画環境の保存と歓迎 ctx.save()現在の環境を保存した状態 は、現在の描画環境をキャッシュに保存することができる. を返す.
3.canvasフレーム
3.1フレーム紹介
canvasのフレームが多いです.そして、ポイントが違っています.
例えばThree.jsは有名な3 Dフレームで、d 3.jsはデータ展示に偏ります.
フレーム名
領域
移動端
文書
github
その他
ThreeJS
3 D
サポート
完全である
https://github.com/mrdoob/three.js
強力なグラフィックエンジン
playCanvas
3 D
サポート
はい、中国語があります
ゲームエンジンは、視覚化された編集ツール「playCanvas Editor」を提供します.
Egret
2 D+3 D
サポート
はい、中国語があります
https://github.com/egret-labs/egret-core
国産、マルチエンドゲームエンジン
Pixi
2 D
サポート
完全である
https://github.com/pixijs/pixi-particles
WebGLエンジン
Fabric.js
2 D
を選択します.
完全である
https://github.com/fabricjs/fabric.js
KONVA
2 D
完全である
https://github.com/konvajs/konva
専用のvueとreactバージョンがあります.
spritejs
2 D
はい、中国語があります
https://github.com/spritejs/spritejs
プラットフォームにまたがる高性能グラフィックスシステムは、web、node、デスクトップアプリケーション、および小プログラムのグラフィックス描画をサポートし、様々なアニメーション効果を実現することができます.vueバージョンがあります
3.2 spritejs学習
3.2.1特性は、DOMオブジェクトを操作するようにカンバス上のグラフィック要素 を操作する. WebGL 2レンダリング マルチレイヤー処理パターン、テキスト、画像レンダリング DOMイベント代理、カスタムイベント配布~~ ES 6+構文とオブジェクト指向プログラミング を使用する. OffscreenCanvasとWeb Worker マルチスレッドレンダリング 構造化対象ツリーは、d 3エンジンに友好的で、シームレスに を使用することができます. 職務に応じて誇張する Vue 3.2.2アーキテクチャ
SpriteJS Nextはいくつかの種類の基礎精霊要素を提供し、DOM元素を操作するようにレイヤー上でそれらを操作することができます.
1.1何がcanvasですか
Canvas
は、HTML
コードの嵌合高さと幅属性によって定義された描画可能領域である.JavaScript
コードは、他の一般的な二次元API
と同様に、完全な図形描画関数のセットによって、グラフィックスを動的に生成する領域にアクセスすることができる.二.canvas製図
2.1 canvasラベル
2.1.1 canvasラベル文法と属性
:
2.2描画コンテキストcontextlet canvas = document.getElementById('canvasDemo'); // (canvsa )
let ctx = canvas.getContext('2d');
2.3パスの描画2.3.1 canvas座標系
canvasの座標体系では、左上角を原点とし、右方向をx軸正方向とし、下方向をy軸正方向とする.
2.3.2始点を描く
* :ctx.moveTo(x, y);
* : 。
* :x,y canvas 。
* :** 。**
2.3.3直線を描く* :ctx.lineTo(x2, y2);
* : x2,y2 。
* :x2,y2 。
2.3.4パスの開始とクローズ* :ctx.beginPath();
* :ctx.closePath();
* : , 。 。
* beginPath: ,
, , 。
2.3.5エッジを描く* :ctx.stroke();
* : 。 , , stroke
javascript部分://=============== api====================
//
let canvas = document.querySelector('#canvasDemo');
let ctx = canvas.getContext('2d'); //
canvas.width = 900; //
canvas.height = 600; //
canvas.style.border = '1px solid #000';
//
ctx.beginPath(); //
ctx.moveTo(100, 100); // ,
ctx.lineTo(300, 100); //
ctx.lineTo(300, 300); //
ctx.closePath(); //
ctx.stroke(); //
2.3.7充填(fill)* :ctx.fill();
* : , 。 。
* : ctx.fillStyle="red";// 8 #FF0000
ctx.fill();
2.3.4快速作成(rect)、クリッピング(stoceRect)、充填(fillRect)、クリア(fillRect)の矩形* :ctx.rect(x, y, width, height);
* :x, y , width height
* rect , 。
* : ctx.strokeRect(x, y, width, height);
- , stroke
* :ctx.fillRect(x, y, width, height);
- , 。 fill 。
* :ctx.clearRect(x, y, width, hegiht);
* : , 。
2.4円を描く(arc()) :ctx.arc(x,y,r,sAngle,eAngle,counterclockwise);
: - x,y: 。 - r: 。 - sAngle: 。 0 , 。 - eAngel: , 。 counterclockwise: 。true ,false: - : rad = deg*Math.PI/180;
2.5描画テキスト* ctx.fillText() “ ”
* ctx.strokeText() ( )
* ctx.measureText()
//
ctx.font = "18px bold ";
//
ctx.fillStyle = "#f00";
//
ctx.textAlign = "center";
//
ctx.textBaseline = "middle";
// ( : ,x ,y )
ctx.fillText(" ", 100, 100);
2.6画像変換2.6.1スケーリング
scale() ,
:ctx.scale(scalewidth,scaleheight)
scalewidth : (1=100%, 0.5=50%, 2=200%, )
scaleheight : (1=100%, 0.5=50%, 2=200%, etc.) + : , , , 。
2.6.2変位キャンバスctx.translate(x,y) (0,0)
:
x: (x)
y: (y)
, 0,0 x,y , 。
2.6.3回転context.rotate(angle);
方法で、現在の描画ctx.restore()
は、以前に保存された経路状態と属性3.canvasフレーム
3.1フレーム紹介
canvasのフレームが多いです.そして、ポイントが違っています.
例えばThree.jsは有名な3 Dフレームで、d 3.jsはデータ展示に偏ります.
フレーム名
領域
移動端
文書
github
その他
ThreeJS
3 D
サポート
完全である
https://github.com/mrdoob/three.js
強力なグラフィックエンジン
playCanvas
3 D
サポート
はい、中国語があります
ゲームエンジンは、視覚化された編集ツール「playCanvas Editor」を提供します.
Egret
2 D+3 D
サポート
はい、中国語があります
https://github.com/egret-labs/egret-core
国産、マルチエンドゲームエンジン
Pixi
2 D
サポート
完全である
https://github.com/pixijs/pixi-particles
WebGLエンジン
Fabric.js
2 D
を選択します.
完全である
https://github.com/fabricjs/fabric.js
KONVA
2 D
完全である
https://github.com/konvajs/konva
専用のvueとreactバージョンがあります.
spritejs
2 D
はい、中国語があります
https://github.com/spritejs/spritejs
プラットフォームにまたがる高性能グラフィックスシステムは、web、node、デスクトップアプリケーション、および小プログラムのグラフィックス描画をサポートし、様々なアニメーション効果を実現することができます.vueバージョンがあります
3.2 spritejs学習
3.2.1特性
SpriteJS Nextはいくつかの種類の基礎精霊要素を提供し、DOM元素を操作するようにレイヤー上でそれらを操作することができます.