javascript – HTML5 Canvas:如何边界fillRect?

HTML5中,我想制作一个fillRect()(带有白色填充颜色)和一个边框(黑色).我不想使用strokeRect(),除非我以后可以填写.我正在制作一个游戏,你点击正方形并改变颜色(它比那更复杂,但这就是它所关注的).

strokeStyle="rgba(0,1)";
        ctx.strokeRect(0,100,100);
    

画布周围的边框仅供参考.
我也可以使用CSS,但目前一切都是HTML格式.

最佳答案
计算出你想要用宽度和高度绘制正方形的位置.完成后,只需先绘制一个较大的正方形,其宽度为2,高2,但中心点相同.所以你绘制一个更大的正方形,然后你在顶部绘制正常的正方形,然后给你一个正方形有边框的错觉

HTML

CSS

#canvas1{
  border: solid 1px black;
}

使用Javascript

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

var rectXPos = 50;
var rectYPos = 50;
var rectWidth = 100;
var rectHeight = 100;

drawBorder(rectXPos,rectYPos,rectWidth,rectHeight)

ctx.fillStyle='#FFF';
ctx.fillRect(rectXPos,rectHeight);

function drawBorder(xPos,yPos,width,height,thickness = 1)
{
  ctx.fillStyle='#000';
  ctx.fillRect(xPos - (thickness),yPos - (thickness),width + (thickness * 2),height + (thickness * 2));
}

jsfiddle链接https://jsfiddle.net/jxgw19sh/2/

– 更新 –

向drawBorder添加一个名为thickness的额外参数,认值为1,但您可以为函数提供任何其他厚度数,它将使用值而不是1.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...