Canvas  绘图  --图形绘制

     Canvas,是屏幕上一个由JavaScript控制的即时模式位图区域,即时模式是指在画布上呈现像素的方式,canvas通过JavaScript调用canvas API,在每一帧中完全重绘屏幕上的位图。我们所要做的就是在每一帧渲染之前设置屏幕的显示内容,这样才能显示正确的像素。下面总结了几种常绘制的图形

var canvas = document.getElementById("canvas");

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

一、矩形绘制

ctx.fillRect(x,y,width,height); //在位置(x,y)处绘制宽为width,高为height的填充矩形

ctx.strokeRext(x,y,width,height); //在位置(x,y)处绘制一个矩形边框

ctx.fillStyle="#ffffaa";

ctx.strokeStyle="#000000";

二、线段绘制

首先了解线段所拥有的几个点:

(1)开始、结束、绘画

beginPath,closePath,stroke()

(2)lineCap属性 定义上下文中线的端点,butt,round,square

(3)lineJoin属性 定义两条相交线产生的拐角,miter,level,round

(4)linewidth属性 定义线的宽度

(5)strokeStyle属性 定义线和形状边框的颜色和样式

 

  1. 圆形端点,斜角连接,在画布左上角

 ctx.strokeStyle = “black”;

ctx.lineWidth = 10;

ctx.lineJoin = “bevel”;

ctx.lineCap = “round”;

ctx.beginPath();

ctx.moveTo(0,0);

ctx.lineTo(25,0);

ctx.line(25,25);

ctx.stroke();

ctx.closePath();

2.圆形端点,斜角连接,不在画布左上角

ctx.beginPath();

ctx.moveTo(10,50);

ctx.lineTo(35,50);

ctx.lineTo(35,75);

ctx.stroke();

ctx.closePath();

3.平直端点,圆形连接,不在画布左上角

ctx.lineJoin = “round”;

ctx.lineCap = “butt”;

ctx.beginPath();

ctx.moveTo(10,100);

ctx.lineTo(35,100);

ctx.lineTo(35,125);

ctx.stroke();

ctx.closePath();

 

三、弧形绘制

ctx.arc(x,y,radius,startAngle,endAngle,anticlockwise)

x和y定义圆心的位置,radius定义弧线的半径,startAngle和endAngle使用弧度值,而不是角度值,anticlockwise的值可以是true或false,用于定义弧线的方向。例如:绘制一个圆心在(100,100),半径为20的圆

ctx.arc(100,100,20,(math.PI/180)*0,(Math.PI/180)*360,false)

四、贝塞尔曲线

立方:ctx.bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y);

平方:  ctx.quadraticCurveTo(cpx,cpy,x,y)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来为您讲解canvas绘制立体文字(2)的实现方法。 首先,我们需要在HTML中创建一个canvas元素,并设置其宽高,如下所示: ```html <canvas id="myCanvas" width="600" height="400"></canvas> ``` 然后,我们需要在JavaScript中获取到这个canvas元素,并获取其2D绘图上下文对象,代码如下: ```javascript const canvas = document.getElementById('myCanvas'); const ctx = canvas.getContext('2d'); ``` 接下来,我们定义绘制立体文字的函数,代码如下: ```javascript function drawText(text, x, y, depth, angle) { // 设置字体样式 ctx.font = 'bold 80px Arial'; // 计算文字在x、y方向上的偏移量 const xOffset = Math.cos(angle) * depth; const yOffset = Math.sin(angle) * depth; // 绘制底部文字 ctx.fillStyle = 'rgba(0, 0, 0, 0.2)'; ctx.fillText(text, x + xOffset, y + yOffset); // 绘制顶部文字 ctx.fillStyle = '#fff'; ctx.fillText(text, x - xOffset, y - yOffset); } ``` 该函数接受5个参数: - `text`:要绘制的文字内容; - `x`:文字的x坐标; - `y`:文字的y坐标; - `depth`:文字的深度,即立体效果的大小; - `angle`:文字倾斜的角度。 我们先使用`ctx.font`设置字体样式,然后根据深度和角度计算出文字在x、y方向上的偏移量。 接着,我们先绘制底部文字,填充颜色为半透明的黑色,然后再绘制顶部文字,填充颜色为白色。 最后,我们在页面加载完成后调用该函数,传入相应的参数进行绘制,如下所示: ```javascript window.onload = function() { drawText('立体文字', 200, 200, 30, Math.PI / 4); }; ``` 运行代码,即可在canvas绘制出立体效果的文字。效果如下图所示: ![canvas绘制立体文字(2)](https://img-blog.csdnimg.cn/20210730165541198.png)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值