当前位置: 首页 > article >正文

uniapp、小程序canvas相关

  • 1、圆形or圆形头像
//示例
const ctx = uni.createCanvasContext('myCanvas'); //canvas
const round = uni.upx2px(72) / 2; // 半径
const x = uni.upx2px(92); //目标x轴位置
const y = uni.upx2px(236); //目标y轴位置

//if 图片是不是静态资源
async =>
const imgSrc = 'https://xxxxxxxxxx';
const imgRes = await uni.getImageInfo({
	src: imgSrc
});
const url = await imgRes?.path;

//else
const imgSrc = '项目静态文件/xxx.png';

drawRound(ctx, round, x, y, url); //调用

const drawRound = (ctx, round, x, y, img) => {
	ctx.save();
	ctx.beginPath();
	let r = round;
	let d = 2 * r;
	let cx = x + r;
	let cy = y + r;
	ctx.arc(cx, cy, r, 0, 2 * Math.PI);
	ctx.clip();
	ctx.drawImage(img, x, y, d, d);
	ctx.restore();
};
  • 2、填充背景
const ctx = uni.createCanvasContext('myCanvas'); //canvas
width, height => canvas的width,height
const createCanvasbj = (ctx, width, height) => {
	ctx.beginPath();
	ctx.rect(0, 0, width, height);
	ctx.setFillStyle('#FAFAFA');
	ctx.fill();
};
  • 3、文字
ctx.setFillStyle('#646978');
ctx.setFontSize(20);
ctx.fillText(123123, x, y);

*4、阴影

const createShadow = () => {
	ctx.beginPath();
	ctx.shadowOffsetX = 0;
	ctx.shadowOffsetY = 5;
	ctx.shadowColor = '#D4D4D4';
	ctx.shadowBlur = 10;
	ctx.rect(x, y, Width, Height);
	ctx.setFillStyle('#FFFFFF');
	ctx.fill();
};

*5、圆角矩形

const createRoundedrectangle = ( ctx, tagLeft, tagWidth, tagTop, tagHeight, radius) => {
	//tagLeft >= x
	//tagTop >= y
	//tagHeight => width
	//radius => 圆角
	
	ctx.beginPath();
	ctx.arc(tagLeft + tagWidth - radius, tagTop + tagHeight - radius, radius, 0, Math.PI * 0.5);
	ctx.lineTo(tagLeft + radius, tagTop + tagHeight);
	ctx.arc(tagLeft + radius, tagTop + tagHeight - radius, radius, Math.PI * 0.5, Math.PI);
	ctx.lineTo(tagLeft, tagTop + radius);
	ctx.arc(tagLeft + radius, tagTop + radius, radius, Math.PI, Math.PI * 1.5);
	ctx.lineTo(tagLeft + tagWidth - radius, tagTop);
	ctx.arc(tagLeft + tagWidth - radius, tagTop + radius, radius, Math.PI * 1.5, Math.PI * 2);
	ctx.lineTo(tagLeft + tagWidth, tagTop + tagHeight - radius);
	ctx.closePath();
	ctx.setStrokeStyle('#E60012');
	ctx.setFillStyle('#E60012');
	ctx.fill();
};

http://www.kler.cn/news/135025.html

相关文章:

  • 金蝶云星空ScpSupRegHandler任意文件上传漏洞复现 [附POC]
  • 【【VDMA彩条显示实验之四 含C语言代码】】
  • android studio导入eclipse项目
  • SpringBoot中文乱码问题解决方案
  • Git常用操作-MD
  • 系列十、ReentrantReadWriteLock
  • Ubuntu 安装VMware Tools选项显示灰色,如何安装VMware Tools
  • 红海营销时代,内容占位的出海品牌更有机会营销占位
  • 探讨MySQL存储过程返回记录集
  • JSON 格式的接口测试流程【Eolink Apikit】
  • 推荐一个windows上传linux服务器/linux服务器的docker镜像的工具,摆脱docker cp,以及解决常见问题。
  • C#的WebRequest类
  • selenium
  • 达芬奇DaVinci Resolve Studio 18.6.3 for Mac
  • 三、机器学习基础知识:Python常用机器学习库(图像处理相关库)
  • Qt的委托代理机制
  • gRPC 四模式之 双向流RPC模式
  • 安全加速cdn可以起到什么作用?
  • Docker中的RabbitMQ已经启动运行,但是管理界面打不开
  • 36、Flink 的 Formats 之Parquet 和 Orc Format
  • 【Python百宝箱】图解未来:数据可视化引领智慧决策时代
  • 15.ORACLE11g的归档方式和日志文件的相关操作
  • 十八数藏文化创新助力非遗传承:传统之美在数字创新中闪耀
  • 计算3D目标框的NMS
  • Nginx 413 Request Entity Too Large
  • 使用centos搭建内网的yum源
  • 【最新Tomcat】IntelliJ IDEA通用配置Tomcat教程(超详细)
  • JDY蓝牙注意事项
  • 高精度算法【Java】(待更新中~)
  • 【以图会意】操作系统的加载流程