当前位置:首页 > 生活百科

canvas画矩形的到的方法(canvas绘图的基本步骤)

栏目:生活百科日期:2024-12-10浏览:0

一、用canvas画圆弧

用canvas画圆弧画圆弧有两种方法:

1、arc(x, y, r, startAngle, endAngle, anticlockwise): 以(x, y) 为圆心,以r 为半径,从 startAngle 弧度开始到endAngle弧度结束。anticlosewise 是布尔值,true 表示逆时针,false 表示顺时针(默认是顺时针)。

startAngle,endAngle是弧度,用角度时候如下所示(Math.PI / 180) * angle,angle换成角度即可。

arc(x0, y0, r1, (Math.PI / 180) * 35, (Math.PI / 180) * 145, false);

角度是以x轴正方向为0°,x轴负方向是180°,正好用canvas画了个图,现学现用。至于哪边是顺时针还是逆时针,看你的anticlockwise 参数了。

function draw(){var canvas = document.getElementById('canvas');   //  获取canvas标签   if (!canvas.getContext) return;var ctx = canvas.getContext('2d');     // 画的x轴    ctx.moveTo(60,150);      ctx.lineTo(240,150);      ctx.stroke();        // 画的y轴    ctx.moveTo(150,60);      ctx.lineTo(150,240);      ctx.stroke();      // 画的圆    ctx.beginPath();    ctx.arc(150, 150, 60, (Math.PI / 180) * 0, (Math.PI / 180) * 360, false);    ctx.closePath();    ctx.stroke();    // 画的画的x轴箭头    ctx.beginPath();    ctx.moveTo(240,145);      ctx.lineTo(240,155);      ctx.lineTo(250,150);     ctx.closePath();    ctx.stroke();     ctx.fill()   // 画的画的y轴箭头    ctx.beginPath();    ctx.moveTo(145,60);      ctx.lineTo(155,60);      ctx.lineTo(150,50);     ctx.closePath();    ctx.stroke();     ctx.fill()   // 标上"0","180"    ctx.fillText("0", 240, 170);    ctx.fillText("180", 60, 170);}draw()

注意:ctx.beginPath();ctx.closePath();有时候感觉可有可无。最好还是用上,因为不结束路径,有时候你再次画线会和上次的线连上了。

2、arcTo(x1, y1, x2, y2, radius): 根据给定的控制点和半径画一段圆弧,最后再以直线连接两个控制点。

function draw(){    var canvas = document.getElementById('canvas');    if (!canvas.getContext) return;    var ctx = canvas.getContext("2d");      ctx.beginPath();    ctx.moveTo(50, 50);      //参数1、2:控制点1坐标   参数3、4:控制点2坐标  参数4:圆弧半径    ctx.arcTo(200, 50, 200, 200, 100);    ctx.lineTo(200, 200)    ctx.stroke();        ctx.beginPath();    ctx.rect(50, 50, 10, 10);    ctx.rect(200, 50, 10, 10)    ctx.rect(200, 200, 10, 10)    ctx.fill()}draw();

arcTo 方法的说明:

这个方法可以这样理解。绘制的弧形是由两条切线所决定。

第 1 条切线:起始点和控制点1决定的直线。

第 2 条切线:控制点1 和控制点2决定的直线。

其实绘制的圆弧就是与这两条直线相切的圆弧

二、用canvas画矩形

canvast 提供了三种绘制矩形的方法:

1、fillRect(x, y, width, height):绘制一个填充的矩形。2、strokeRect(x, y, width, height):绘制一个矩形的边框。3、clearRect(x, y, width, height):清除指定的矩形区域,然后这块区域会变的完全透明。

function draw(){    var canvas = document.getElementById('canvas');    if (!canvas.getContext) return;    var ctx = canvas.getContext("2d");    ctx.fillRect(10, 10, 100, 50);     // 绘制矩形,填充的默认颜色为黑色    ctx.strokeRect(10, 70, 100, 50);   // 绘制矩形边框    ctx.clearRect(20, 20, 40, 30)   // 清除一个矩形区域}draw();

画一个渐变色的矩形。

function draw(){    var canvas = document.getElementById('canvas');    if (!canvas.getContext) return;    var ctx = canvas.getContext("2d");  // 创建渐变的样式1    var grd=ctx.createLinearGradient(0,0,200,0);    grd.addColorStop(0,"green");    grd.addColorStop(1,"white");    // 创建渐变的样式2    var rrd=ctx.createLinearGradient(0,200,0,0);    rrd.addColorStop(0,"red");    rrd.addColorStop(1,"white");      // 创建渐变的样式3  var crd=ctx.createRadialGradient(155,130,10,155,130,100);    crd.addColorStop(0,"blue");    crd.addColorStop(1,"white");     ctx.fillStyle=grd; // 用第一种样式画矩形    ctx.fillRect(10,10,150,80);    ctx.fillStyle=rrd;// 用第二种样式画矩形    ctx.fillRect(10,100,80,150);     ctx.fillStyle=crd;// 用第三种样式画矩形    ctx.fillRect(80,100,150,60);}draw();

渐变可以填充在矩形, 圆形, 线条, 文本等等, 各种形状可以自己定义不同的颜色。

以下有两种不同的方式来设置Canvas渐变:

createLinearGradient(x,y,x1,y1) &– 创建线条渐变createRadialGradient(x,y,r,x1,y1,r1) &– 创建一个径向/圆渐变

当我们使用渐变对象,必须使用两种或两种以上的停止颜色。

addColorStop()方法指定颜色停止,参数使用坐标来描述,可以是0至1.

使用渐变,设置fillStyle或strokeStyle的值为 渐变,然后绘制形状,如矩形,文本,或一条线。

Canvas 绘制文本

使用 canvas 绘制文本,重要的属性和方法如下:

font &– 定义字体fillText(text,x,y) &– 在 canvas 上绘制实心的文本strokeText(text,x,y) &– 在 canvas 上绘制空心的文本

function draw(){    var canvas = document.getElementById('canvas');    if (!canvas.getContext) return;    var ctx = canvas.getContext("2d");    ctx.font="20px Arial";    ctx.fillText("美好的一天!",10,50);    ctx.font="30px Arial";    ctx.strokeText("美好的一天!",10,100);}draw();

“canvas画矩形的到的方法(canvas绘图的基本步骤)” 的相关文章

pdf虚拟打印机哪个好,pdf虚拟打印机排行榜

PDF阅读器是我们现在学习办公中不可缺少的工具,不少人经常用到PDF阅读器的打印功能,但是你确定对PDF打印功能了解吗?学会了打印,可为您工作中带来极大的便利!...

三相稳压器接线图及接线方法(教你三相稳压器如何接线)

前言有些电子设备性能落后,跟不上要求被淘汰是必然,比如互联网时代,普遍使用的运营商网络机顶盒。多年之前的运营商盒子,硬件配置很低,系统是linux定制系统,内存...

互联网产品经理职责描述(经理职责及必能要求介绍)

前言:国内有产品经理的這个专有名詞多来自于互联网产业,而在互联网思维之人人都是产品经理的鼓吹下,让很多人以为产品经理是互联网时代文化下的产物,而误解了這个来自于...

家用警报器一直响怎么办(天然气报警器响的原因)

家里有安装天然气是会安装天然气报警器,这样方式天然气泄漏,也能第一时间知道并且处理,避免险情的发生。天然气报警器响了怎么办?对于天然气报警器这种小装扮,许多人好...

广告最多的网站有哪些(广告作品网站推荐)

PPC广告是出海独立站营销的重中之重,如何选择PPC广告平台呢?今天我们来了解一下主流的8个PPC平台。2021年出海独立站的8个最热门PPC广告平台虽说各个P...

如何商标注册申请,商标注册申请的途径与步骤

商标注册流程如下:一、查询。商标注册申请人或其代理人在提出注册申请前,对其申请的商标是否与再先权利商标有无相同或近似的查询工作。二、审查。商标审查分形式审查和实...

2023年电话销售口才900句(最实用的销售话术)

一、开场1、面对陌生客户,如何做有效的自我介绍反例:我是之江贵金属有限公司的小李,我们是……直接将我方的信息和电话目的告诉对方,如果客户比较敏感就会遭到打断1....

小米电动螺丝刀可以钻墙吗(这款电动螺丝刀功能强大值得

7月11日消息,米家官微宣布,将于明天带来一款居家神器,可以让人一口气拧完180颗螺丝不费力。如果没有意外的,新品就是电动螺丝刀了,预热海报中排列了10&&#2...

win7无法开机如何修复(开机进不了windows系统解决方法)

Win7系统开机时显示systemhalted怎么办?最近有用户反应在电脑开机的时候显示systemhalted,systemhalted其实就是死机的意思,出...

客服回应iPhone13粉屏问题(请及时更新软件)

近期,有用户在黑猫投诉平台投诉自己新买的iPhone13系列出现粉屏、卡顿等现象,经过版本升级也未解决。今日苹果客服对此做出回复,称“我们并没有接到相关通知,系...