canvas画圆角矩形

    /**
     * 画圆角矩形
     * @param {*} ctx 
     * @param {*} x  圆角矩形起始坐标x
     * @param {*} y  圆角矩形起始坐标y
     * @param {*} width 矩形宽度
     * @param {*} height 矩形高度
     * @param {*} r 矩形圆角
     * @param {*} color 矩形填充颜色
     */
    function drawRoundedRectangle (ctx, x, y, width, height, r, color) {
      ctx.beginPath();
      ctx.moveTo(x + r, y);
      ctx.fillStyle = color;//矩形填充颜色
      ctx.lineTo(x + width - r, y);
      ctx.arc(x + width - r, y + r, r, Math.PI * 1.5, Math.PI * 2);
      ctx.lineTo(x + width, y + height - r);
      ctx.arc(x + width - r, y + height - r, r, 0, Math.PI * 0.5);
      ctx.lineTo(x + r, y + height);
      ctx.arc(x + r, y + height - r, r, Math.PI * 0.5, Math.PI);
      ctx.lineTo(x, y + r);
      ctx.arc(x + r, y + r, r, Math.PI, Math.PI * 1.5);
      ctx.fill();
    }

方法二:边框样式

/**
 * 绘制圆角矩形
 * @param {* 必填} x x坐标
 * @param {* 必填} y y坐标
 * @param {* 必填} width 宽度
 * @param {* 必填} height 高度
 * @param {* 必填} radius 圆角半径
 * @param {* 非必填 默认值:'#456'} strokeColor 边框颜色
 * @param {* 非必填 无默认值} fillColor 填充颜色
 * @param {* 非必填 默认值:[]实线} lineDash 边框样式
 */
const drawRoundRect = (ctx, x, y, width, height, radius, strokeColor, fillColor, lineDash) => {
  strokeColor = strokeColor || '#333';
  lineDash = lineDash || [];
  ctx.beginPath();
  ctx.setLineDash(lineDash);
  ctx.arc(x + radius, y + radius, radius, Math.PI, Math.PI * 3 / 2);
  ctx.lineTo(width - radius + x, y);
  ctx.arc(width - radius + x, radius + y, radius, Math.PI * 3 / 2, Math.PI * 2);
  ctx.lineTo(width + x, height + y - radius);
  ctx.arc(width - radius + x, height - radius + y, radius, 0, Math.PI / 2);
  ctx.lineTo(radius + x, height + y);
  ctx.arc(radius + x, height - radius + y, radius, Math.PI / 2, Math.PI);
  ctx.lineTo(x, y + radius);
  ctx.strokeStyle = strokeColor;
  ctx.stroke();
  if (fillColor) {
    ctx.fillStyle = fillColor;
    ctx.fill();
  }
  ctx.closePath();
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fengzhiguanS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值