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で同一ファイルを見つける方法

推薦する

HTML の blockquote タグの使用と美化

ブロック引用の定義と使用法<blockquote> タグは引用ブロックを定義します。 &...

WeChatアプレットのスケルトン画面の実装例

目次スケルトンスクリーンとはアプレットでスケルトン画面を生成する方法導入方法表示と非表示ユーザーエク...

フォーム内のどの隠し属性をフォームとともに送信できるか

フォーム内の visibility=hidden および display=none のフォーム要素は...

きれいなJavaScriptコードの書き方を教える記事

目次1. 変数意味のある名前を使う不必要なコンテキストを追加しないようにするハードコードされた値を避...

MySQL8の再帰メソッドの使い方を教える

以前、カスタム関数を使用して MySQL でツリー構造を再帰的にクエリする方法についての記事を書きま...

ウェブページのコアコンテンツ(画像とテキスト)の視覚的表現の紹介

情報の最適化と改良は常にデザインの最初のステップです。 「これは百度アライアンスユーザーエクスペリエ...

カルーセル例の JS 実装

この記事では、カルーセルチャートの小さなケースを実装するためのJSの具体的なコードを参考までに共有し...

MIME エンコーディングの概要 (オンライン情報と実際の経験から統合)

1. MIME: 多目的インターネットメール拡張インペリアル カレッジ オブ コンピュータ オンラ...

vue 動的コンポーネント

目次1. コンポーネント2. キープアライブ2.1 問題点2.2 キープアライブを使って解決する2....

Linux で tcpdump コマンドを使用してデータ パケットをキャプチャおよび分析する方法の詳細な説明

序文tcpdump はよく知られたコマンドライン パケット分析ツールです。 tcpdump コマンド...

Linux ユーザーとグループのコマンド例分析 [切り替え、ユーザーの追加、権限制御など]

この記事では、Linux のユーザーおよびグループのコマンドについて例を挙げて説明します。ご参考まで...

JS でタブ効果を書く

この記事の例では、タブ効果を記述するためのJSの具体的なコードを参考までに共有しています。具体的な内...

JavaScript にはすでに Object があるのに、なぜ Map が必要なのでしょうか?

目次1. オブジェクトをマップとして扱わない1. 未定義のプロパティはプロトタイプチェーンを通じてア...

CSS で画像アダプティブ コンテナを実装するいくつかの方法 (要約)

多くの場合、画像をコンテナのサイズに合わせて調整する必要があります。 1. imgタグ方式幅と高さを...

MySQLインスタンスが起動できない問題の分析と解決

目次序文シナリオ分析要約する序文数日前、友人がWeChatで私に連絡してきて、マシンがダウンタイムか...