html5学习笔记(6)使用canvas绘图2

一、对树干使用背景图片

注意:当图片加载完成时才能在树干上使用


       //加载用作树干的图片
        var bark = new Image();
        bark.src = "bark.jpg";
        //当图片加载完成,开始在canvas上绘图
        bark.onload = function () {
            drawTrails(context);
        }
           //在画布上画树
            function drawTrails(context) {
                context.save();
                context.translate(100, 250);			
				
                //1、路径
                //创建表现树冠的路径
                createCanopyPath(context);
                //2、描边样式
                //加宽线条
                context.lineWidth = 4;
                //平滑路径的接合点
                context.linejoin = 'round';
                //将颜色修改为棕色
                context.strokeStyle = '#663300';
	       context.stroke();

                //3、填充样式	
                //将填充色设置为绿色并填充树冠
                context.fillStyle = '#339900';
                context.fill();				
		//4、使用加载的图片填充树干区域
	    context.drawImage(bark, -5, -50, 10, 50);
              context.restore();				
            }

二、使用渐变
            //对树干使用渐变
            function trunkGradient(context) {				
              
		//创建用作水平树干纹理的三阶水平渐变
                var turnGradient = context.createLinearGradient(-5, -50, 5, -50);
                //树干的左侧边缘部分是一般程度的棕色
                turnGradient.addColorStop(0, "#663300");
                //树干中间偏左的位置颜色要淡一些
                turnGradient.addColorStop(0.4, "#996600");
                //树干右侧边缘的颜色要深一些
                turnGradient.addColorStop(1, "#552200");
                //使用渐变色填充树干
                context.fillStyle = turnGradient;
                context.fillRect(-5, -50, 10, 50);
				
                //接下来创建垂直渐变,以用作树冠在树干上投影
                var canopyShadow = context.createLinearGradient(0, -50, 0, 0);

                //投影渐变的起点是透明度设为50%的黑色
                canopyShadow.addColorStop(0, 'rgba(0, 0, 0, 0.5)');

                //方向垂直向下,渐变色在很短的距离内迅速渐变至完全透明,这段长度之外的树干上没有投影
                canopyShadow.addColorStop(0.2, 'rgba(0, 0, 0, 0.0)');

                //在树干上填充投影渐变
                context.fillStyle = canopyShadow;
                context.fillRect(-5, -50, 10, 50);		
		
            }        
三、绘制一条小路曲线
 function drawCurve(context) {
                //保存canvas的状态并绘制路径
                context.save();
                context.translate(-10, 350);
                context.beginPath();
                //第一条曲线向右上方弯曲
                context.moveTo(0, 0);
                context.quadraticCurveTo(170, -50, 260, -190);
                //第二条曲线向右下方弯曲
                context.quadraticCurveTo(300, -250, 410, -250);
                //使用棕色的粗线条来绘制路径
                context.strokeStyle = '#663300';
                context.lineWidth = 20;
                context.stroke();
                //恢复之前的canvas状态
                context.restore();
            }

效果如下:





评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值