java绘制聊天气泡代码_封装一个canvas画对话气泡的函数

本文档介绍如何使用Java的canvas API来绘制对话气泡,通过封装一个drawBubble函数,利用二次贝塞尔曲线进行路径绘制。示例展示了不同尺寸和位置的气泡效果。
摘要由CSDN通过智能技术生成

quadraticCurveTo(cp1x, cp1y, x, y) 绘制二次贝塞尔曲线,cp1x,cp1y为一个控制点,x,y为结束点。开始点由moveTo,或者前面一次的结束点作为下次调用的开始点.

文档参考二次贝塞尔曲线及三次贝塞尔曲线

e13b4a10c969513ce5a3a73b5e0302b4.png 蓝色的为起始/结束点,红色的为控制点. 后来发现不好看,调整了参数比例.

Document

#test-canvas {

border: 1px solid black;

}

// 封装一个画对话气泡的函数

function drawBubble(ctx, x, y, w, h) { //左上角点(x,y) 整体宽高(w,h)

ctx.beginPath();

ctx.moveTo(x, y + 0.35 * h);

ctx.quadraticCurveTo(x + 0.04 * w, y + 0.02 * h, x + 0.5 * w, y);

ctx.quadraticCurveTo(x + 0.96 * w, y + 0.02 * h, x + w, y + 0.35 * h);

ctx.quadraticCurveTo(x + w, y + 0.7 * h, x + 0.58 * w, y + 0.72 * h);

ctx.quadraticCurveTo(x + 0.5 * w, y + 0.9 * h, x + 0.2 * w, y + h);

ctx.quadraticCurveTo(x + 0.38 * w, y + 0.80 * h, x + 0.38 * w, y + 0.72 * h);

ctx.quadraticCurveTo(x, y + 0.70 * h, x, y + 0.35 * h);

ctx.stroke();

}

function draw() {

var canvas = document.getElementById('test-canvas');

if (canvas.getContext) {

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

drawBubble(ctx,10,10,100,100);

drawBubble(ctx,110,10,50,50);

ctx.strokeStyle="#ff0000";

drawBubble(ctx,110,60,50,50);

}

}

您的浏览器不支持canvas

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值