HTML5 Canvas: How to border a fillRect?

后端 未结 3 783
太阳男子
太阳男子 2020-12-18 21:07

In HTML5, I want to make a fillRect() (with a white fill color) and a border (black). I don\'t want to use strokeRect() unless I can f

3条回答
  •  时光取名叫无心
    2020-12-18 21:49

    Work out the position you want to draw the square with the width and height. Once you have done that simply draw a bigger square first which has wider by 2 and higher by 2 but with the same center point. So you draw a square which is bigger and then you draw the normal square on top, this then gives you the illusion of the square has a border

    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, rectYPos, rectWidth, 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 link : https://jsfiddle.net/jxgw19sh/2/

    -- Update --

    Add an extra parameter to drawBorder called thickness the default value is 1 but you can provide any other number for thickness into the function and it will use value instead of 1.

提交回复
热议问题