js キャンバスは角丸画像を実現します

js キャンバスは角丸画像を実現します

この記事では、角を丸くするためのjsキャンバスの具体的なコードを参考までに紹介します。具体的な内容は次のとおりです。

角の丸い画像のコード実装:

<!DOCTYPE html>
<html lang="ja">
<ヘッド>
    <メタ文字セット="UTF-8">
    <title>タイトル</title>
</head>
<body style="background: rgba(199,237,204,1)">
 
<div style="display:flex; flex-direction: row">
 
    <!-- スタイルを使用してキャンバスの幅と高さを設定すると、描画されたコンテンツが Firefox 上で垂直方向に伸びます。 。 。 -->
    <canvas id="drawing" width="400px" height="400px">描画するキャンバス</canvas>
 
    <pre id="コンテナ" style="margin: 10px"/>
 
    <img src=//img.jbzj.com/file_images/article/202109/202191115608734.jpg>
</div>
</本文>
<script type="text/javascript">
 
    window.onlοad = 関数 () {
        var 描画 = document.getElementById('描画');
 
        描画コンテキストを取得する場合
            print('サポート')
            RoundRectFunc() を追加します。
            var context = drawing.getContext('2d');
            描画(コンテキスト);
 
        } それ以外 {
            print('not') を出力します。
        }
    }
 
 
    関数draw(コンテキスト) {
        context.fillStyle = '赤';
 
        var image = document.images[0];
 
        context.roundRect(0,0,image.width/2,image.height/2,30,true)
 
        context.globalCompositeOperation='ソースイン';
        context.drawImage(画像、0、0、画像の幅/2、画像の高さ/2)
        // toImage();
 
    }
 
    関数addRoundRectFunc() {
        CanvasRenderingContext2D.prototype.roundRect =
            関数 (x, y, 幅, 高さ, 半径, 塗りつぶし, ストローク) {
                if (typeof ストローク == "未定義") {
                    ストローク = true;
                }
                if (typeof radius === "undefined") {
                    半径 = 5;
                }
                このメソッドは、次のようになります。
                this.moveTo(x + 半径, y);
                this.lineTo(x + 幅 - 半径, y);
                this.quadraticCurveTo(x + 幅, y, x + 幅, y + 半径);
                this.lineTo(x + 幅、y + 高さ - 半径);
                this.quadraticCurveTo(x + 幅、y + 高さ、x + 幅 - 半径、y + 高さ);
                this.lineTo(x + 半径, y + 高さ);
                this.quadraticCurveTo(x, y + 高さ, x, y + 高さ - 半径);
                this.lineTo(x, y + 半径);
                this.quadraticCurveTo(x, y, x + 半径, y);
                this.closePath();
                if (ストローク) {
                    この.stroke();
                }
                if (fill) {
                    これを塗りつぶします。
                }
            };
    }
 
    関数toImage() {
        var imageUri = drawing.toDataURL('image/png');
        var imageTag = document.createElement('img');
        imageTag.style = '余白:10px;幅:200px;高さ:200px'
        イメージタグ.src = イメージUri;
        document.body.appendChild(画像タグ)
    }
 
    関数 print(txt) {
        document.getElementById("コンテナ").innerHTML += ('\n') + txt;
    }
 
    document.body.onclick = 関数(){
        ウィンドウの場所を再読み込み()
    }
    console.log = 印刷;
 
 
</スクリプト>
 
 
</html>

効果画像:

小さなコードを追加します: キャンバスは角が丸い画像 (アバターなど) を生成します

円画像(ctx, 画像, x, y, r) {
    ctx.save();
    var d = 2 * r;
    var cx = x + r;
    var cy = y + r;
    ctx.arc(cx, cy, r, 0, 2 * Math.PI);
    ctx.clip();
    ctx.drawImage(画像, x, y, d, d);
    ctx.restore();
  }

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • ドラッグ可能な美しい丸い角の特殊効果ポップアップレイヤーの完全な例を実現するための JS+CSS
  • 抽象的な CSS 丸角効果を js で実装しました!!
  • js を使用して CSS の丸い角を生成および更新する

<<:  Centos7 構成 fastdfs および nginx 分散ファイル ストレージ システムの実装プロセス分析

>>:  Linuxで同一ファイルを見つける方法

推薦する

CSS で 2 つの固定列と 1 つの適応列を実装するいくつかの方法

この記事では、CSS で 2 つの固定列と 1 つのアダプティブ列を実装するいくつかの方法を紹介し、...

ServerManager の起動時にデータベースに接続できないエラーを解決する方法

Servermanager 起動時の接続データベース エラーmgrstart.batを実行しますエラ...

製品を選択した後、右下隅に√記号を表示するための純粋なCSS

おすすめの記事: CSS 疑似クラスの右下隅をクリックすると、選択を示すチェックマークが表示されます...

Dockerコンテナのディスクがいっぱいになった場合の状況のまとめ

序文この記事では、最近私が遭遇した 2 つの状況について説明します。今後、新たな発見があれば追加して...

JavaScript キャンバスで 9 マスのグリッドカットの効果を実現

この記事では、9グリッドカット効果を実現するためのキャンバスの具体的なコードを紹介します。具体的な内...

ダウンロードにおすすめの氷と雪のフォント 33 種類 (個人用および商用)

01 ウィンターフレーク(個人のみ) 02 スノートップキャップ(業務用) 03 モディウス「フリ...

HTML は CSS スタイルと JS スクリプトを動的に読み込みます。例

1. スクリプトを動的に読み込むウェブサイトの需要が高まるにつれて、スクリプトの需要も徐々に増加しま...

Dockerボリューム削除操作

プルーンこのコマンドを使用するには、クライアントとデーモンの両方の API バージョンが少なくとも ...

順序再構築に関する簡単な説明: MySQL シャーディング

目次1. 目的2. 環境整備1. 基本情報2. データベース環境の準備3. データベースを構築し、サ...

Vue-cli4 ルーティング構成の詳細な理解

目次序文 - Vue ルーティング1. 最も基本的なルーティング構成1. router/index....

SSL を実装するために nginx を設定する方法の例

環境説明サーバーシステム: Ubuntu 18.04 64ビットnginx: 1.14この記事では主...

MySQL パスワードに特殊文字が含まれている場合とコマンドラインからログインする場合

サーバーでは、データベースにすばやくログインするために、通常は mysql -hhost -uuse...

CSS3は小さな矢印のさまざまなグラフィック効果を実現します

CSS を使ってさまざまなグラフィックを実現できるのは素晴らしいことです。画像を切り取る必要はなく、...

nginx リバース プロキシでの proxy_pass の実装

フォーマットはシンプルです: proxy_pass URL; URL には、送信プロトコル (htt...

Linuxのdateコマンドの使用

1. コマンドの紹介date コマンドは、現在の時刻または指定された時刻を指定された形式で表示するた...