画布 canvas 的相关内容

1.什么是canvas

  canvas也被叫做画布,是在JavaScript中完成网页图像制作的一个重要的途径,画布是一个矩形区域,在这个矩形区域中你可以利用好这里的每一个像素。同样在canvas中也有着别样的,快捷的,多种多样的绘制路径、矩形、圆形、字符以及添加图像的方法。

2.如何创建一个canvas元素

  在HTML5中创建一个canvas元素,你可以设置它的id名,同时也可以设置canvas的宽度和宽度、当然如果我们要绘制的话还要获取一下,canvas的context。

var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");

3.如何在canvas中绘制图形

  在canvas中提供了很多简单绘制图形的方法、现在我们开始介绍

  3.1如何绘制一个矩形、矩形可以说是我们在绘制图形中比较常用的基础图形之一了,在绘制一个举行的时候,最基本的四个要素无非就是,矩形开始的时候的水平位置 x ,开始为垂直位置 y ,矩形的宽度 width , 矩形的高度 height、

    3.1.1 最基础的矩形, rect()来绘制矩形       

ctx.rect(20,20,150,100); // rect(x,y,width,height)
ctx.stroke();

    3.1.2 fillRect():有填充色的矩形(默认的填充色是黑色)

ctx.fillRect(20,20,150,100); // fillRect(x,y,width,height)

    3.1.3 strokeRect() : 未填充的矩形也可以理解为一个矩形边框

ctx.strokeRect(20,20,150,100); // strokeRect(x,y,width,height)

    3.1.4 clearRect () :清除一个矩形区域

ctx.fillRect(0,0,300,150); // 原来画的矩形区域
ctx.clearRect(20,20,100,50); // 清除的矩形区域 (可以看到在清除区域内没有填充色、证明该区域已经被清除)

  3.2如何绘制一个圆形。在canvas中圆形也是比较常用的工具,同时圆和弧线的区别就是,弧线是圆的一部分,所以说我们可以根据角度来绘制我们需要的弧线

    3.1.1 arc():绘制一个圆和部分圆:绘制一个圆有五个要素:1.圆心的横坐标、2.圆心的纵坐标、3.圆的半径、4.圆的起始角度、5.圆的结束角度 (Math.PI =π=180度)

ctx.arc(250,250,100,0,Math.PI*2); // 圆心坐标为(250,250),半径为100的圆
ctx.stroke();

    3.1.2画一个圆弧

ctx.arc(250,250,100,0,Math.PI,false); //  半圆 //前面的参数是一样的 最后的false是默认值
ctx.stroke(); 

ctx.arc(250,250,100,0,Math.PI,true); // 一个圆减去所画的部分,的剩余部分;(也可以理解为互补的部分)

  3.3 如何通过利用点来绘制线条,在构图中线条是极其重要的,现在我们来说一下如何通过点来构建线条

ctx.beginPath(); // 开始绘图
ctx.moveTo(250,250); // moveTo(x,y) 开始绘图的点的坐标
ctx.lineTo(500,500); // lineTo(x,y) 定义结束点的坐标
ctx.closePath(); // 关闭路径
ctx.stroke(); // 将两个点用线连接

  3.3.1如何利用点绘制一个三角形

ctx.beginPath(); // 开始绘图 (会将图形进行一个自动连接,形成一个封闭的图形)
ctx.moveTo(100,100); // 开始点的位置
ctx.lineTo(250,250); //
ctx.lineTo(400,400); //
ctx.closePath(); // 关闭路径(作为一个封闭图形存在)
ctx.stroke(); // 用线连接

4.canvas中的一些简单的效果

  4.1 fillStyle : 更改用于填充绘画的样式:

ctx.fillStyle = "red" ; // 更改填充颜色为红色

  4.2 strokeStyle:官方解释为更改用于笔触的颜色;也可以简单理解为更改连接线的颜色

ctx.strokeStyle = "red"; // 更改笔触颜色为红色

  4.3 shadowColor:设置阴影颜色、 shadowBlur:后面加数值:表示阴影模糊的程度,默认值是0

ctx.shadowBlur=20; //设置模糊的级别
ctx.shadowColor="black"; // 设置阴影颜色为black;
ctx.fillStyle="red";
ctx.fillRect(20,20,100,80); // 在矩形周围会产生一个黑色的阴影

  4.4 shadowOffsetX: 设置阴影与原图形的水平距离

ctx.shadowOffsetX //  属性设置或返回阴影与形状的水平距离。
ctx.shadowOffsetX=0 // 指示阴影位于形状的正下方。
ctx.shadowOffsetX=20 // 指示阴影位于形状 left 位置右侧的 20 像素处。
ctx.shadowOffsetX=-20 // 指示阴影位于形状 left 位置左侧的 20 像素处。

  4.5 shadowOffsetY:设置阴影与原图形的垂直距离

ctx.shadowOffsetY  // 属性设置或返回阴影与形状的垂直距离。
ctx.shadowOffsety=0 // 指示阴影位于形状的正下方。
ctx.shadowOffsetY=20 // 指示阴影位于形状 top 位置下方的 20 像素处。
ctx.shadowOffsetY=-20 // 指示阴影位于形状 top 位置上方的 20 像素处。

  4.6 createLinearGradient(): 创建线性渐变 createLinearGradient(x0,y0,x1,y1)

    x0(渐变开始的横坐标)、y0(渐变开始的纵坐标)、x1(渐变结束的横坐标)、y1(渐变结束的纵坐标)

var my_gradient=ctx.createLinearGradient(0,0,0,170);
my_gradient.addColorStop(0,"black"); // 设置渐变开始颜色
my_gradient.addColorStop(1,"white"); // 设置渐变结束颜色
ctx.fillStyle=my_gradient;
ctx.fillRect(20,20,150,100);

  4.7 creatPattern():在指定方向内重复指定的元素 (指定元素可以是图片、画布元素、视频元素)

    //方式:repeat(默认、水平和垂直方向上都重复)repeat-x(水平)repeat-y(垂直) no-repeat(不重复)

var img=document.getElementById("lamp"); // 获取img对象
var pat=ctx.createPattern(img,"repeat");  // 指定元素、重复的方式
ctx.rect(0,0,150,100);
ctx.fillStyle=pat;
ctx.fill();

  4.8 createRadialGradient():创建径向渐变;createRadialGradient(x0,y0,r0,x1,y1,r1)

    //x0(渐变开始圆的横坐标),y0(渐变开始圆的纵坐标),r0(渐变开始圆的半径)

       x1(渐变结束圆的横坐标),y1(渐变结束圆的纵坐标),r1(渐变结束圆的半径)

var grd=ctx.createRadialGradient(75,50,5,90,60,100);
grd.addColorStop(0,"red");
grd.addColorStop(1,"white");
ctx.fillStyle=grd;
ctx.fillRect(10,10,150,100);

  4.9 addColorStop():规定渐变对象中的颜色和位置,在渐变过程中,该语句至少定义一次

    addColorStop(stop,color):stop是介于0~1之间的数,表示到开始到结束之间的位置

  4.10 lineCap :设置线条末端的样式

ctx.beginPath();
ctx.lineCap="butt"; // 默认,向每个线条的末端添加平直的边缘
ctx.lineCap="round";// 向线条的末端添加一个圆形线帽
ctx.lineCap="square";  // 向线条末端添加一个方形的线帽
ctx.moveTo(20,20);
ctx.lineTo(20,200);
ctx.stroke();

  4.11 lineJoin:创建边角的类型  

ctx.beginPath();
ctx.lineJoin="miter"; // 默认创建尖角
ctx.lineJoin="round"; // 创建圆角
ctx.lineJoin="bevel";  // 创建斜角
ctx.moveTo(20,20);
ctx.lineTo(100,50);
ctx.lineTo(20,100);
ctx.stroke();

  4.12 lineWidth:设置当前线条宽度

ctx.lineWidth = 10; // 直接加Number就可以,默认值是0

  4.13 clip():从原始画布中剪切任意形状和尺寸

ctx.clip();

  4.14 arcTo():arcTo(x1,y1,x2,y2); x1(弧的起点的x坐标),y1(弧的起点的y坐标),x2(弧的终点的x坐标),y2(弧的终点的y坐标)

ctx.beginPath();
ctx.moveTo(20,20);           // 创建一个开始点
ctx.lineTo(100,20);          // 创建一个连接点
ctx.arcTo(150,20,150,70,50); // 创建一个弧线
ctx.lineTo(150,120);         //再创建一个连接点
ctx.stroke();                // 勾画

  4.15 scale():缩放当前图像更大或者是更小  注意:在这里放大或缩小的不仅仅是原图像的宽度和高度还有定位也放大或者缩小了

      scale(width,height);第一个参数是改变宽度的大小,第二个参数代表是改变高度的大小

ctx.strokeRect(5,5,25,15); //先创建一个对比图,以便于观察大小的变化
ctx.strokeRect(10,10,30,20);//再创建一个对比图,观察定位的变化
ctx.scale(2,2);  // 宽度放大200%,高度方法200%;
ctx.strokeRect(5,5,25,15);//创建矩形

  4.16 rotate():旋转当前绘图

ctx.rotate(20*Math.PI/180); // 旋转20度
// num*Math.PI/180 旋转num度

  4.17 重新映射画布上的(0,0)位置

ctx.fillRect(10,10,100,50);
ctx.translate(70,70); // 将新的(0,0)位置设置为(70,70)
ctx.fillRect(10,10,100,50);

  4.18 transform()方法替换当前的变换矩阵。transform(a,b,c,d,e,f)

      a:水平缩放绘图、b:水平倾斜绘图、c:垂直倾斜绘图、d:垂直缩放绘图、e:水平移动绘图、f:垂直移动绘图

ctx.fillStyle="yellow";
ctx.fillRect(0,0,250,100);
ctx.transform(1,0.5,-0.5,1,30,10);
ctx.fillStyle="red";
ctx.fillRect(0,0,250,100);

  4.19 fillText() 在画布上绘制填色的文本。文本的默认颜色是黑色

      fillText(text,x,y):text:要绘制的文本、x:开始绘制文本的横坐标、y:开始绘制文本的纵坐标

ctx.fillText("Hello World!",10,50);

  4.20 strokeText()在画布上绘制无填充文本

      strokeText(text,x,y):text:要绘制的文本、x:开始绘制文本的横坐标、y:开始绘制文本的纵坐标

ctx.fillText("Hello World!",10,50);

  4.21 font():设置当前画布上的字体的属性

ctx.font="30px Arial"; // 字体大小  字体样式
ctx.fillText("Hello World",10,50);

  4.22 textAlign 文本内容的对齐方式

ctx.strokeStyle="red";
ctx.moveTo(150,20);
ctx.lineTo(150,170); // 绘制一条竖线从而更加清晰的看出效果
ctx.stroke();
ctx.font="15px Arial";
ctx.textAlign="start"; //  文本在指定的位置开始
ctx.fillText("textAlign=start",150,60);
ctx.textAlign="end";  //  文本在指定的位置结束
ctx.fillText("textAlign=end",150,80);
ctx.textAlign="left";   //  文本在指定的位置开始
ctx.fillText("textAlign=left",150,100);
ctx.textAlign="center";  //  文本的中心放置在指定位置
ctx.fillText("textAlign=center",150,120);
ctx.textAlign="right";  //  文本在指定的位置结束
ctx.fillText("textAlign=right",150,140);

  

 

  

 

  

  

     

         

时间: 2024-11-18 14:45:00

画布 canvas 的相关内容的相关文章

微信小程序导出当前画布指定区域的内容并生成图片保存到本地相册(canvas)

最近在学小程序,在把当前画布指定区域的内容导出并生成图片保存到本地这个知识点上踩坑了. 这里用到的方法是: wx.canvasToTempFilePath(),该方法作用是把当前画布指定区域的内容导出生成指定大小的图片,并返回文件路径.(详情 看文档) 这里先来分析一下这句话:导出当前画布指定区域的内容并生成图片 .这里以画一个矩形并将该矩形保存到本地相册为例. 首先我们要做的是先在画布上画一个矩形,其次是利用 wx.canvasToTempFilePath()方法导出画布指定区域的内容,这里当

PHP《将画布(canvas)图像保存成本地图片的方法》

用PHP将网页上的Canvas图像保存到服务器上的方法 2014年6月27日 歪脖骇客 发表回复 8 在几年前HTML5还没有流行的时候,我们的项目经理曾经向我提出这样一个需求:让项目评审专家们在评审结束时用笔在平板电脑上进行电子签名. 这需要我们评审软件里提供这样一个功能:打开浏览器,登录,进入评审意见页,页面最下部有个方块区域,用户在这里用触摸笔进行签名,然后这个签名将会保持 的服务器上. 这样的一个需求在当时是让我大费周折,但如今想起来,如果用html5的canvas实现,真是太简单了.在

视频播放相关内容总结

视频播放相关内容总结 多媒体常识: 什么是多媒体 多媒体是计算机和视频技术的结合,实际上它是两个媒体:声音和图像,或者用现在的术语:音响和电视 常用的视频格式 Android系统默认:mp4.3gp 常用格式:ts.3gpp.3g2.3gpp2.avi.mkv.flv.divx.f4v.rm.rmvb.rv.wmv.asf.mov.mpg.v8.ram.mpeg. swf.m2v.asx.ra.ram.ndivx.xvid等 常用音频格式: Android系统:mp3.ogg: 常用格式:wma

【Android】自己定义View、画布Canvas与画笔Paint

安卓自己定义View事实上非常easy. 这个View能够像<[Android]利用Java代码布局,button加入点击事件>(点击打开链接)一样.利用Java代码生成一系列的组件. 也能够配合画布Canvas与画笔Paint来使用. 以下用一个样例来说明.例如以下图,有一个自己定义布局View.里面摆放着,利用画布Canvas与画笔Paint绘制出来的蓝色正方形与红色文字. 在res\layout\activity_main.xml中.直接像摆放安卓固有组件一样,能够直接使用这个我定义组件

移动端 h5开发相关内容总结——CSS篇

移动端 h5开发相关内容总结——CSS篇 标签: css移动 2016-01-06 15:59 5536人阅读 评论(3) 收藏 举报  分类: HTML+CSS(17)  版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 1.移动端开发视窗口的添加 h5端开发下面这段话是必须配置的 <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=n

EF Code First 配置的相关内容

I.实体间一对一的关系 添加一个PersonPhoto类,表示用户照片类 1 /// <summary> 2 /// 用户照片类 3 /// </summary> 4 public class PersonPhoto 5 { 6 [Key] 7 public int PersonId { get ; set ; } 8 public byte [] Photo { get ; set ; } 9 public string Caption { get ; set ; } // 标题

画布Canvas的使用方法

今天来个画布的讲解,对于画布你们了解多少呢. Canvas他是使用 JavaScript 来绘制图像的,canvas 元素本身是没有绘图能力的.所有的绘制工作必须在 JavaScript 内部完成. 在画布的流程中大致是这样: 1.'先获取画布canvas: 2.创建2d画布: 3.起始点 4.过渡: 5.结尾点: 来看看我画的太极吧: <!DOCTYPE html> <html> <head lang="en"> <meta charset=

HTML5 画布canvas元素

HTML5 画布canvas元素 HTML5的canvas元素以及随其而来的编程接口Canvas API应用前景极为广泛.简单地说,canvas元素能够在网页中创建一块矩形区域,这块矩形区域可以成为画布,这其中可以绘制各种图形.可别小看了这个画布,它能实现无限的可能性.接下来我们从最简单的部分开始,逐步认识Canvas的强大功能. 1.在页面中添加canvas元素: 默认情况下,Canvas所创建的矩形区域大小为宽300像素,高150像素,不过我们可以使用width和height属性来自定义画布

【转帖】MATLAB 与 音频处理 相关内容摘记

MATLAB 与 音频处理 相关内容摘记 MATLAB 与 音频处理 相关内容摘记 MATLAB 与 音频处理 相关内容摘记 1 MATLAB 音频相关函数 1 MATLAB 处理音频信号的流程 2 音量标准化 2 声道分离合并与组合 3 数字滤波 3 数据转换 5 基于MATLAB 的数字滤波实验6 MATLAB 音频相关函数 声音数据输入输出函数: 可以方便地读写au和way文件,并可控制其中的位及频率. wavread()和wavwriteO. 声音播放: wavplay():播放wav声