zoukankan      html  css  js  c++  java
  • canvas_09 像素文字

    效果图:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3     <head>
     4         <meta charset="UTF-8">
     5         <meta http-equiv="X-UA-Compatible" content="IE=edge">
     6         <meta name="viewport" content="width=device-width, initial-scale=1.0">
     7         <title>Canvas</title>
     8         <style>
     9             canvas {
    10                 margin: 0 auto;
    11                 border: 1px solid #aaa;
    12                 display: block;
    13             }
    14         </style>
    15     </head>
    16     <body>
    17         <canvas width="500px" height="500px" id="canvas"></canvas>
    18 
    19         <script>
    20             var canvas = document.querySelector("#canvas");
    21             var ctx = canvas.getContext("2d");
    22 
    23             /*
    24                 ctx.getImageData(x, y, width, height) 返回数组
    25                 R - 红色 (0 - 255)
    26                 G - 绿色 (0 - 255)
    27                 B - 蓝色 (0 - 255)
    28                 A - alpha (0 - 255)   0 透明,255不透明
    29                 
    30                 var img = new Image();
    31                 img.src = "./1.jpeg";
    32                 img.onload = () => {
    33                     ctx.drawImage(img, 0, 0, 200, 200);
    34                     var copy = ctx.getImageData(40, 20, 50, 50);
    35                     ctx.putImageData(copy, 0, 300);
    36                 };
    37             */
    38 
    39             var w = canvas.width;
    40             var h = canvas.height;
    41 
    42             function drawCircle(x, y, r, color) {
    43                 ctx.beginPath();
    44                 ctx.arc(x, y, r, 0, Math.PI * 2);
    45                 ctx.fillStyle = color || "#000";
    46                 ctx.fill();
    47             }
    48 
    49             function drawText(text, x, y) {
    50                 ctx.font = "300px 微软雅黑";
    51                 ctx.textAlign = "center";
    52                 ctx.textBaseline = "middle";
    53                 ctx.fillText(text, x, y, w);
    54             }
    55 
    56             // step_01 画文字
    57             drawText("", w / 2, h / 2);
    58 
    59             // step_02 获取像素点
    60             var copy = ctx.getImageData(0, 0, w, h);
    61 
    62             // step_03 清除画布
    63             ctx.clearRect(0, 0, w, h);
    64 
    65             // step_04 筛选有效像素点
    66             var leap = 3;
    67             for (var y = 0; y < h; y += leap) {
    68                 for (var x = 0; x < w; x += leap) {
    69                     var index = x + y * w; // 公式
    70                     var a = copy.data[index * 4 + 3];
    71                     if (a > 128) {
    72                         // step_05 画圆
    73                         drawCircle(x, y, 1, "#f00")
    74                     }
    75                 }
    76             }
    77         </script>
    78     </body>
    79 
    80 </html>
  • 相关阅读:
    radioButton
    事件分发
    自定义属性
    自定义View
    拦截来电
    Messenger信使
    使用AIDL远程调用服务中的方法
    利用接口调用服务中特定的方法
    Service服务
    BroadcastReceiver广播接受者
  • 原文地址:https://www.cnblogs.com/luwei0915/p/15734754.html
Copyright © 2011-2022 走看看