canvas插入图片设置背景,渐变

##在canvas中插入图片(需要image对象)
1.canvas操作图片时,必须要等图片加载完才能操作
2.drawImage(image, x, y, width, height)
其中 image 是 image 或者 canvas 对象,x 和 y 是其在目标 canvas 里的起始坐标。
这个方法多了2个参数:width 和 height,这两个参数用来控制 当像canvas画入时应该缩放的大小

        window.onload=function(){
        var canvas=document.querySelector("#test");
          if(canvas.getContext){
                   var ctx=canvas.getContext("2d");
                    var img= new Image();
                        img.src="img/tg.png";
                        img.onload=function(){
                        draw();
                }
                    function draw(){
                        ctx.drawImage(img,0,0,img.width,img.height);
                    }
       }

    }

        window.onload=function(){
        var canvas=document.querySelector("#test");
          if(canvas.getContext){
                   var ctx=canvas.getContext("2d");
                    var img= new Image();
                        img.src="img/tg.png";
                        img.onload=function(){
                        draw();
                }
                    function draw(){
                        ctx.drawImage(img,0,0,img.width,img.height);
       }

      }
    }    

drawImage

###在canvas中设置背景(需要image对象)
1.createPattern(image, repetition)
image:图像源
epetition:
"repeat"
"repeat-x"
"repeat-y"
"no-repeat"

一般情况下,我们都会将createPattern返回的对象作为fillstyle的值

                    function draw(){
                     var pattern=ctx.createPattern(img,"no-repeat")//不加;号
                     ctx.fillStyle=pattern;
                     ctx.fillRect(0,0,300,300);
       }

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">

         html,body{
                height: 100%;
                overflow: hidden;

            }
            body{
                background: greenyellow;
            }
          #test{
               position: absolute;
               top: 0;
               left: 0;
               right: 0;
               bottom:0;
               margin: auto;
           background: gray;

          }
        </style>
    </head>
    <body>
        <canvas id="test" width="300" height="300">
            <span>您的浏览器不支持画布元素 请您换成萌萌的谷歌</span>
        </canvas>
    </body>
     <script type="text/javascript">

        window.onload=function(){
        var canvas=document.querySelector("#test");
          if(canvas.getContext){
                   var ctx=canvas.getContext("2d");
                    var img= new Image();
                        img.src="img/tg.png";
                        img.onload=function(){
                        draw();
                }
                    function draw(){
                     var pattern=ctx.createPattern(img,"no-repeat")//不加;号
                     ctx.fillStyle=pattern;
                     ctx.fillRect(0,0,300,300);
       }

      }
    }
    </script>
</html>

###渐变
canvas渐变(线性渐变)
createLinearGradient(x1, y1, x2, y2)
表示渐变的起点 (x1,y1) 与终点 (x2,y2)

gradient.addColorStop(position, color)
gradient :createLinearGradient的返回值
addColorStop 方法接受 2 个参数,
position 参数必须是一个 0.0 与 1.0 之间的数值,表示渐变中颜色所在的相对位置。
例如,0.5 表示颜色会出现在正中间。
color 参数必须是一个有效的 CSS 颜色值(如 #FFF, rgba(0,0,0,1),等等)

// function draw(){
var gradient = ctx.createLinearGradient(0, 0, 200, 200);
gradient.addColorStop(0,"red");
gradient.addColorStop(0.5,"yellow");
gradient.addColorStop(0.7,"pink");
gradient.addColorStop(1,"green");
ctx.fillStyle=gradient;
ctx.fillRect(0,0,300,300);

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            *{
                margin: 0;
                padding: 0;
            }
            html,body{
                height: 100%;
                overflow: hidden;
            }
            body{
                background: pink;
            }
            #test{
                background: gray;
                position: absolute;
                left: 0;
                top: 0;
                right: 0;
                bottom: 0;
                margin: auto;
            }
        </style>
    </head>
    <body>
        <canvas id="test" width="300" height="300">
            <span>您的浏览器不支持画布元素 请您换成萌萌的谷歌</span>
        </canvas>
    </body>
    <script type="text/javascript">
        window.onload=function(){
            var canvas = document.querySelector("#test");
            if(canvas.getContext){
                var ctx = canvas.getContext("2d");

                /*var img = new Image();
                img.src="tg.png";
                img.onload=function(){
                    draw();
                }*/

//                function draw(){
                    var gradient =  ctx.createLinearGradient(0, 0, 200, 200);
                    gradient.addColorStop(0,"red");
                    gradient.addColorStop(0.5,"yellow");
                    gradient.addColorStop(0.7,"pink");
                    gradient.addColorStop(1,"green");
                    ctx.fillStyle=gradient;
                    ctx.fillRect(0,0,300,300);
//                }

            }
        }

canvas渐变(径向渐变)
createRadialGradient(x1, y1, r1, x2, y2, r2)
前三个参数则定义另一个以(x1,y1) 为原点,半径为 r1 的圆,
后三个参数则定义另一个以 (x2,y2) 为原点,半径为 r2 的圆。

                    var gradient = ctx.createRadialGradient(150, 150, 50, 150, 150, 100)
                    gradient.addColorStop(0,"red");
                    gradient.addColorStop(0.5,"yellow");
                    gradient.addColorStop(0.7,"pink");
                    gradient.addColorStop(1,"green");
                    ctx.fillStyle=gradient;
                    ctx.fillRect(0,0,300,300);

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            *{
                margin: 0;
                padding: 0;
            }
            html,body{
                height: 100%;
                overflow: hidden;
            }
            body{
                background: pink;
            }
            #test{
                background: gray;
                position: absolute;
                left: 0;
                top: 0;
                right: 0;
                bottom: 0;
                margin: auto;
            }
        </style>
    </head>
    <body>
        <canvas id="test" width="300" height="300">
            <span>您的浏览器不支持画布元素 请您换成萌萌的谷歌</span>
        </canvas>
    </body>
    <script type="text/javascript">
        window.onload=function(){
            var canvas = document.querySelector("#test");
            if(canvas.getContext){
                var ctx = canvas.getContext("2d");

                /*var img = new Image();
                img.src="tg.png";
                img.onload=function(){
                    draw();
                }*/

//                function draw(){
                    var gradient = ctx.createRadialGradient(150, 150, 50, 150, 150, 100)
                    gradient.addColorStop(0,"red");
                    gradient.addColorStop(0.5,"yellow");
                    gradient.addColorStop(0.7,"pink");
                    gradient.addColorStop(1,"green");
                    ctx.fillStyle=gradient;
                    ctx.fillRect(0,0,300,300);
//                }

            }
        }

    </script>
</html>

原文地址:https://www.cnblogs.com/hack-ing/p/11829341.html

时间: 2024-10-26 22:28:55

canvas插入图片设置背景,渐变的相关文章

Android开发中,9-patch 图片设置背景带来的问题

9-patch 为了解决不同分屏下的图片适应性,对图片做了padding,而在android中,要给一个控件设置背景图,最终是要调用 setBackgroundDrawable  方法来设置图片资源,而此方法执行是这样的,如果图片资源带有padding的话,会缺省作为控件的padding.基于这样,如果控件没有明确设置自己的padding,很肯能会出现图片能出来,但是里边的内容,如文字看不到的情况,此时需要自己给控件设置下padding,才可以正常显示.

IOS 利用图片设置背景

UIImageView* imageView = [[UIImageView alloc] initWithFrame:self.view.bounds]; imageView.image = [UIImage imageNamed:@"背景灰.png"]; self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"背景灰.png"]];

canvas 三 图片插入及文字填充

/** * canvas插入图片 * 等图片加载完,在执行canvas操作 * 图片预加载:在onload 中调用方法 * drawImage(oImg,x,y,w,h) * oImg:图片x,y坐标 * w,h宽高 * * 设置背景 * createPattern(oImg,平铺方式) * repeat,repeat-x,repeat-y,no-repeat * * 渐变 * createLinearGradient(x1,y1,x2,y2) * createRadialGradient(x1

CSS3:用CSS设置多个背景、背景渐变、指定背景大小

http://blog.csdn.net/net_lover/article/details/5212026 CSS3规范中对背景这一部分,新加入了一些令人兴奋的功能,如可以设置多个背景图片.可以指定背景大小.设置背景渐变等功能.CSS3规范中定义的背景属性有: 属性名 可能的值 默认值 background 是一种简写方式:bg-image || bg-position || / bg-size || repeat-style || attachment || bg-origin,最后一个背景

背景图片和插入图片区别

1.背景图片和插入图片区别? 1.1.背景图片:仅仅是一个装饰,不会占用位置 插入图片:会占用位置 1.2.背景图片有定位属性,可以很方便控制图片位置 插入图片没有定位属性,控制图片位置不太方便 1.4.插入图片比背景图片语义要强,企业开发中推荐使用插入图片 原文地址:https://www.cnblogs.com/2020-2-12/p/12375302.html

HTML + CSS CSS设置背景图片后图片没有铺满屏幕等

在15PB学习了一个星期的 HTML + CSS之后,发现还有一些东西需要去记忆,俗话说的好: 眼过千遍不如手过一遍,这就把需要记忆的东西记下来. 很多时候我们遇到的情况是: 设置背景图片background-image:url(xxx.jpg); 如果背景图片不平铺就达不到全屏的效果,如果平铺了之后效果就有些差强人意,这时候CSS这个属性就派上用场了 background-size: cover; //把背景图像扩展至足够大,以使背景图像完全覆盖背景区域. 这个属性有四个值: length 设

img只显示图片一部分 或 css设置背景图片只显示图片指定区域

17:14 2016/3/22img只显示图片一部分 或 css设置背景图片只显示图片指定区域 background-position: 100% 56%; 设置背景图片显示图片的哪个坐标区域,图片左上角为0,0或0%,0%,右下角为高度和宽度,或100%,100%. clip:rect(300px 100px 300px 0px); 设置显示图片的某个区域,分别是上右下左的顺序设置 部分代码:<style type="text/css">img {position:abs

css网页中设置背景图片的方法详解

css网页中设置背景图片的方法详解 在css代码中设置背景图片的方法,包括背景图片.背景重复.背景固定.背景定位等 用css设置网页中的背景图片,主要有如下几个属性: 1,背景颜色 {background-color:数值}2,背景图片 {background-image: url(URL)|none}3,背景重复 {background-repeat:inherit|no-repeat|repeat|repeat-x|repeat-y}4,背景固定 {background-attachment

CSS设置背景图片代码

CSS设置背景图片代码:设置背景图片并不难,但是有时候会忘记url的格式怎么写,之所以写这篇文章,就是让忘记者查询到,寄希望提供一定的帮助.代码如下: background-image:url(mytest/demo/small.jpg) 相关阅读:1.background属性可以参阅background属性用法详解一章节. 2.background-image可以参阅CSS的background-image属性一章节. 原文地址是:http://www.softwhy.com/forum.ph