zoukankan      html  css  js  c++  java
  • html5图像组合

    一 图像组合

    1.绘制阴影

       在绘制阴影效果时,需要使用Canvas的多个属性配合完成

      shadowBlur设置阴影的迷糊级数

      shadowOffsetX设置形状与阴影的水平距离

      shadowOffsetY设置形状与阴影的垂直距离

      shadowColor设置阴影的颜色

       

    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
       <canvas id="myCanvas" height="300" width="400"></canvas>
       <script type="text/javascript">
           var c=document.getElementById("myCanvas");
           var ctx= c.getContext("2d");
           ctx.save();                    //保存上下文对象
           ctx.shadowBlur=10;           //设置阴影的模糊级别
           ctx.shadowOffsetX=20;        //设置阴影与矩阵的水平距离
           ctx.shadowOffsetY=20;        //设置阴影与矩阵的垂直距离
           ctx.shadowColor="black";    //设置阴影颜色
           ctx.fillStyle="blue";       //设置填充颜色
           ctx.beginPath();              //设置阴影颜色
           ctx.fillRect(20,20,200,200);   //绘制一个矩形
           ctx.restore();                 //获取保存的上下文对象
           ctx.fillStyle="black";      //重新设置填充颜色
           ctx.beginPath();               //设置阴影颜色
           ctx.fillRect(300,20,200,200) ; //绘制第二个矩形
    </script> 
    </body>
    </html>

       显示:

     shadowOffsetX和shadowOffsetY的值对阴影的效果?

     shadowOffsetX和shadowOffsetY表示阴影与对象的水平和垂直距离,如果值是正数,阴影显示在图像的右边和下边;如果值是负 数,阴影显示在对象的左边和上边。

    2.透明效果

       主要通过设置globalAlpha属性控制重叠图形的透明度,该值介于0和1之间,0表示完全透明,1表示完全不透明

       

     1 <!DOCTYPE html>
     2 <html>
     3 <head lang="en">
     4     <meta charset="UTF-8">
     5     <title></title>
     6 </head>
     7 <body>
     8    <canvas id="myCanvas" height="300" width="400"></canvas>
     9    <script>
    10        var c=document.getElementById("myCanvas");
    11        var ctx= c.getContext("2d");
    12        ctx.fillStyle="red";        //设置填充颜色
    13        ctx.fillRect(20,20,300,200);  //绘制不透明矩形框
    14        ctx.globalAlpha=0.2         //设置透明度
    15        ctx.fillStyle="blue";      //设置填充颜色
    16        ctx.fillRect(100,100,300,200);//绘制第二个矩形框
    17        ctx.fillStyle="green";      //设置填充颜色
    18        ctx.fillRect(150,150,200,200);//绘制第三个矩形框
    19 
    20    </script>
    21 </body>
    22 </html>

          显示:

    二 使用图像

    1.插入图形

     1 <!doctype html>
     2 <html>
     3 <head>
     4 <meta charset="utf-8">
     5 <title>4.6.1.html</title>
     6 </head>
     7 <body>
     8 <canvas id="myCanvas" width="400" height="400">您的浏览器不支持canvas标签</canvas>   
     9 <script type="text/javascript">    
    10 var c=document.getElementById("myCanvas");  
    11 var cxt=c.getContext("2d");  
    12 var img=new Image();              //创建一个图片数组
    13 img.src="img01.png";              //设置图片路径
    14 img.onload=function(){              //为图片加载一个onload事件
    15     cxt.drawImage(img,0,0);          //加载图片
    16 };  
    17 </script>  
    18 </body>  
    19 </html>

    onload事件:会在图像或者页面加载完成后立即发生

    2.平铺图像

       需要用到Canvas的createPattern函数,该函数有两个参数,一个是需要平铺的图像,二是以哪种方式进行平铺,repeat(在水平和垂直方向重复),repeat-x(在水平方向重复),repeat-y(在垂直方向重复),no-repeat(不重复)

      

     1 <!doctype html>
     2 <html>
     3 <head>
     4 <meta charset="utf-8">
     5 <title>4.6.2.html</title>
     6 </head>
     7 <body>
     8 <canvas id="myCanvas" width="600" height="400">您的浏览器不支持canvas标签</canvas>   
     9 <script type="text/javascript">  
    10 var image = new Image();
    11     var canvas = document.getElementById("myCanvas");             
    12     var ctx = canvas.getContext("2d");    
    13     image.src = "002.png";
    14     image.onload = function () {
    15         var ptrn = ctx.createPattern(image, "repeat");
    16         ctx.fillStyle = ptrn;
    17         ctx.fillRect(0, 0, 600, 600);
    18     };
    19 
    20 </script>  
    21 </body>  
    22 </html>

    3.裁剪图像

    该函数的多个重载方法

     1 <html>
     2 <head>
     3 <meta charset="utf-8">
     4 <title>4.6.3.html</title>
     5 </head>
     6 <body>
     7 <canvas id="myCanvas" width="400" height="400">您的浏览器不支持canvas标签</canvas>   
     8 <script type="text/javascript">    
     9 var c=document.getElementById("myCanvas");  
    10 var cxt=c.getContext("2d");  
    11 var img=new Image();  
    12 img.src="img01.png";  
    13 img.onload=function(){  
    14     cxt.drawImage(img,100,100,100,100,0,0,100,100);       
    15 };  
    16 </script>  
    17 </body>  
    18 </html> 

     

    4.像素级操作

    根据各点像素颜色分配的不同,呈现出不同的图像

       

     1 <!doctype html>
     2 <html>
     3 <head>
     4 <meta charset="utf-8">
     5 <title>4.6.4.html</title>
     6 </head>
     7 <body>
     8 <canvas id="myCanvas" width="400" height="400">您的浏览器不支持canvas标签</canvas>   
     9 <script type="text/javascript">    
    10 var c=document.getElementById("myCanvas");
    11 var ctx=c.getContext("2d");
    12 var img=new Image();  
    13 img.src="img01.png";  
    14 img.onload=function(){  
    15     ctx.drawImage(img,0,0);
    16     var imgData=ctx.getImageData(0,0,c.width,c.height);
    17     // 反转颜色
    18     for (var i=0;i<imgData.data.length;i+=4)      {
    19       imgData.data[i]=255-imgData.data[i];
    20       imgData.data[i+1]=255-imgData.data[i+1];
    21       imgData.data[i+2]=255-imgData.data[i+2];
    22       imgData.data[i+3]=255;
    23       }
    24       ctx.putImageData(imgData,0,0);
    25 };  
    26 </script>  
    27 </body>  
    28 </html>

  • 相关阅读:
    网络基础
    Web开发几种常用工具
    win组合键概述(windows10)
    Alfred使用
    Java8之新特性--modules
    jsp九大内置对象和四大作用域
    authtype
    Myeclipse中的快捷键
    如何在Jenkins CI 里调试
    写好unit test的建议和例子
  • 原文地址:https://www.cnblogs.com/sunli0205/p/6243177.html
Copyright © 2011-2022 走看看