


html5 キャンバス描画チュートリアル (2) — 直線の描画と color/endpoint/intersection などの線スタイルの設定_html5 チュートリアル スキル
Canvas が何なのかまだわからない場合は、前の記事を読んでください 描画を学ぶとき、線は最も基本であり、線の接続によってあらゆるグラフィックを形成できます。 Canvas でも同様です。
始める前に、キャンバスとブラシを取り出しましょう:
var ctx = cvs.getContext('2d') // ブラシ
でも、ぶらぶらしていても仕方ないので、絵を描き始めなければなりません。最初に最も単純な直線を描画しましょう。
直線を描画するメソッドは lineTo であり、そのパラメーターは point である moveTo と同じです。
ctx.lineTo(x,y) 当然、線を引くと描画点も移動しますので、lineTo以降は描画点が対象点となります。
ctx.lineTo(200,100);
PS を使用したことのある生徒は、グラフィックの 2 つのモード、1 つは塗りつぶし、もう 1 つはストロークであることを確実に知っているでしょう。線を描画したことは、PS でパスを描画したことと同じです。この時点で、パスのエッジを描画することができ、グラフィックスが表示されます。
キャンバスのストローク メソッドはストローク()です。次にコードを完成させましょう:
ctx.bottom();線を見たことができます。もちろん、数百のパスを連続して描画し、その後ストローク アクションを実行して数百の線を一度に描画することもできます。次に、4 つの線で四角形を描画しましょう:
ctx.ストローク();
ここでは、最初にパス全体を描画してから、一度にストロークします。
——–作者の不満: Canvas 描画の欠点の 1 つは、基本的に推測に基づいており、非常に直感的ではないことです。
重要な注意事項: キャンバスの描画プロセス (塗りつぶしやストロークなど) は非常にリソースを消費します。システム リソースを節約して効率を向上させたい場合は、すべてのパスを描画してからグラフィックスを一度に塗りつぶすかストロークするのが最善です。
上の図から、デフォルトの線の太さは 1px、線の色は黒であることがわかります。もちろん設定できるのですが、不思議なのは、線幅の設定は lineWidth ですが、線のスタイルの設定は、なぜ lineStyle ではないのでしょうか。私にも分かりません。 :
コードをコピー
上記のコードは、線の幅を 10px に、線の色を半透明の赤に設定します。
質問: 描画した長方形のパスの幅と高さが 100、辺の線の幅が 10 ピクセルの場合、辺を描画した長方形の全体の幅と高さはいくらですか? 100 10*2=120ですか?
エッジがパスの外側に完全に描画されている場合は 120 になります。しかし、キャンバスはそうではありません。 Canvas のすべての線には「中央線」があり、線の絶対的な中央に位置し、線のストロークは中心線から両側に伸びます。たとえば、線の幅が 1 の場合、中心線は 0.5 にあり、幅が 5 の場合、中心線は 2.5 になります。キャンバス グラフィックスをストロークすると、パスは線の中心線に合わせてストロークされます。図 2 に示すように:
つまり、トレースすると、線の半分が外側に、半分が内側になります。つまり、上の長方形の全体の幅は 100 (10/2)*2 で、110 に等しくなります。 🎜 >左上の角が欠けて見えるのはこのためです。ここでは絵を描く人がいないからです。
しかし、残りの角にはなぜ切り込みが入っていないのでしょうか?写真の四隅に隙間があるように見えませんか?
それは、線を描くときにブラシを「持ち上げ」ていなかったためです。つまり、ブラシが連続していたためです。つまり、moveTo がありませんでした。信じられない場合は、今すぐ移動しましょう:
ctx.moveTo(200,100); 🎜>ctx.lineTo(100,200);
ctx.lineWidth = 10;
ctx.ストロークスタイル = 'rgba(255,0,0,0.5)'; >ctx.ストローク();
2行目を描画する前にmoveToを実行しましたが、moveToの座標は変わりませんでしたが、更新するとグラフは次のようになりました。写真3]:
それでは、moveTo を削除して、左上隅の欠けている部分を埋める方法を考えてみましょう。
まず最初に質問させてください、私たちの道は閉ざされているのでしょうか?これはナンセンスではありませんか?もちろん閉まってますよ!
違います!これはパスの終点を始点と一致させるだけで、パス自体は閉じません。 キャンバスでパスを閉じるにはどうすればよいですか? closePath() を使用します。
コードをコピーします
この時点で更新すると、完全な正方形になります。図 4:
線をどれだけ太くしても、線が太ければ太いほど、より多くの人に好まれますよね? ————この正方形の四隅は規則的な直角であり、丸みはありません。丸い角はどうでしょうか? PS、図 5 の四角形のストロークを見てください:
ご覧のとおり、エッジが厚くなるほど、角の円弧が大きくなります。
Canvas のエッジを PS のエッジと同じにしたい場合、何か方法はありますか?もちろん、それは lineJoin 属性です。
lineJoin は線の交点を意味し、図 6 に示すように、miter (デフォルト、鋭い角)、bevel (ベベル)、round (丸い角) の 3 つの属性があります。長方形の角が鋭いことがすぐに理解できることは間違いありません。そのため、角を丸めたものに変更してみます。
グラフィックは次のようになります。 図 7:

PS に少し似ています。 、 右?
さらに、前の図から、キャンバスの線の端が平らになっていることがわかります。これは変更できますか?結局のところ、平らで見栄えが良くありません。

実際には平らなヘッドであることが画像を見るとわかります。四角頭も同じですが、平頭の方があまり出っ張らない点が違います。丸頭も角頭もしばらく出っ張りますが、この部分の長さはどのくらいでしょうか?それは線の幅の半分です。
何か考えたことはありますか?はは、前の閉じたパスの問題では、lineCap を四角形の頭に設定すると、効果は同じになります。

また、思い出していただきたいのですが、閉じたパスには終点がありません。したがって、エンドポイント スタイルは閉じたパス上では見ることができません。
また
: lineCap は lineJoin に似ているため、混同しないように注意してください。
鋭い目を持っていても運が悪いと、1 ピクセルの線が 1 ピクセルの幅ではなく、もっと広くてぼやけて見えることがあります。図 9 に示すように:
おめでとうございます!バグではないバグが発生しました。これについては次の記事でお話します。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









キャンバス矢印プラグインには、1. シンプルで使いやすい API を備え、カスタムの矢印効果を作成できる Fabric.js、2. 矢印を描画する機能を提供し、さまざまな矢印を作成できる Konva.js が含まれます。スタイル; 3. 豊富なグラフィックス処理機能を提供し、さまざまな矢印効果を実現できる Pixi.js; 4. 矢印のスタイルやアニメーションを簡単に作成および制御できる Two.js; 5. さまざまな矢印効果を作成できる Arrow.js ; 6. 大まかな.jsでは、手描きの矢印などが作成できます。

キャンバス時計の詳細には、時計の外観、目盛り、デジタル時計、時針、分針、秒針、中心点、アニメーション効果、その他のスタイルなどが含まれます。詳細な紹介: 1. 時計の外観、キャンバスを使用して時計の外観として円形の文字盤を描画し、文字盤のサイズ、色、境界線などのスタイルを設定できます; 2. 目盛り線、目盛り線を描画します。位置; 3. デジタル時計、現在の時と分を示すために文字盤にデジタル時計を描くことができます; 4. 時針、分針、秒針など。

html2canvas のバージョンには、html2canvas v0.x、html2canvas v1.x などが含まれます。詳細な紹介: 1. html2canvas v0.x (html2canvas の初期バージョン) 最新の安定バージョンは v0.5.0-alpha1 です。これは、多くのプロジェクトで広く使用され、検証されている成熟したバージョンです。2. html2canvas v1.x、これは html2canvas の新しいバージョンです。

Canvas フレームワークを探索する: 一般的に使用される Canvas フレームワークを理解するには、特定のコード例が必要です。 はじめに: Canvas は HTML5 で提供される描画 API であり、これを通じて豊富なグラフィックスやアニメーション効果を実現できます。描画の効率と利便性を向上させるために、多くの開発者がさまざまな Canvas フレームワークを開発しました。この記事では、一般的に使用される Canvas フレームワークをいくつか紹介し、読者がこれらのフレームワークの使用方法をより深く理解できるように、具体的なコード例を示します。 1.EaselJSフレームワークEa

キャンバスを使用して uniapp でチャートやアニメーション効果を描画する方法には、特定のコード例が必要です。 1. はじめに モバイル デバイスの普及に伴い、モバイル端末上でさまざまなチャートやアニメーション効果を表示する必要があるアプリケーションがますます増えています。 uniapp は、Vue.js に基づくクロスプラットフォーム開発フレームワークとして、キャンバスを使用してチャートやアニメーション効果を描画する機能を提供します。この記事では、uniapp がキャンバスを使用してチャートやアニメーション効果を実現する方法を紹介し、具体的なコード例を示します。 2.キャンバス

tkinter Canvas 属性には、bg、bd、relief、width、height、cursor、highlightbackground、highlightcolor、highlightthickness、insertbackground、insertwidth、selectbackground、selectforeground、xscrollcommand 属性などが含まれます。詳しい紹介

ゲーム開発におけるキャンバスの力と応用を理解する 概要: インターネット技術の急速な発展に伴い、Web ゲームはプレイヤーの間でますます人気が高まっています。 Web ゲーム開発の重要な部分として、キャンバス テクノロジーがゲーム開発に徐々に登場し、その強力なパワーと応用性を示しています。この記事では、ゲーム開発におけるキャンバスの可能性を紹介し、具体的なコード例を通じてその応用例を示します。 1. Canvas テクノロジの概要 Canvas は HTML5 の新しい要素で、これにより次のことが可能になります。

Canvas のマウス座標を取得する方法: 1. JavaScript サンプル ファイルを作成します; 2. Canvas 要素への参照を取得し、マウス移動イベントのリスナーを追加します; 3. Canvas 上でマウスが移動すると、getMousePos 関数がトリガーされます; 4. 使用方法 「getBoundingClientRect()」メソッドはCanvas要素の位置とサイズ情報を取得し、event.clientXとevent.clientYを通じてマウス座標を取得します。
