canvas函数封装(画圆形图片、文字换行)

uniapp canvas绘图流程,从绘制图案到绘制文字,然后完成。还有一些方法的具体细节。 好的我们开始,uniapp绘制海报进行保存是我们经常需要制作的功能。而绘制海报,我们一般会绘制图片,绘制文字,绘制截取图片。 下面让我们来看下绘制一个海报的具体过程。 1、首先我们需要绘制图片 在canvas上绘制图片。我们需要用到一下代码 ctx.drawImage( 图片路径 , 0, 0, 244 * 1.22, 429 * 1.22); //绘制图 而该方法只支持绘制本地图片,包括本地... 阅读详情

1、画圆形图片

/**
 * 画圆形图片
 * @param {object} ctx canvas
 * @param {number} width 图像宽度
 * @param {number} height 图像高度
 * @param {number} x 开始位置
 * @param {number} y 结束位置
 * @param {string} url 图片地址
 */
function drawCircular(ctx,width,height,x,y,url) {
    var img_w = width;
    var img_h = height;
    var img_x = x;
    var img_y = y;
    ctx.save();
    ctx.beginPath();
    ctx.arc(img_w / 2 + img_x, img_h / 2 + img_y, img_w / 2, 0, Math.PI * 2, false);
    ctx.clip();
    ctx.drawImage(url, img_x, img_y, img_w, img_h);
    ctx.restore();
}

2、根据每行字符长度换行,或者用\n换行

/**
 * 文字换行,特例可用\n
 * @param {Object} ctx 画布对象
 * @param {String} text 文字
 * @param {Number}} x 开始位置
 * @param {Number} y 开始位置y
 * @param {Number} h 行高
 * @param {Number}} len 长度
 * @param {String} textAlign 对齐方式
 */
function drawText(ctx,text,x,y,h,len,textAlign='left'){
    ctx.font="22px SourceHanSansCN-Regular";
    ctx.fillStyle = '#010101'
    ctx.textAlign = textAlign;
    var n=Math.ceil(text.length/len)
    
    if(text.indexOf('\n')==-1){
        y=y-n*h
        for(var i=0;i<n;i++){
            var nowT=text.slice(i*len,(i+1)*len)
            ctx.fillText(nowT,x,y+i*h);
        }
    }else{
        var arr=text.split('\n')
        y=y-arr.length*h
        for(var i=0;i<arr.length;i++){
            ctx.fillText(arr[i],x,y+i*h);
        }
    }
}

3、根据宽度换行

/**
 * canvas文字换行
 * @param {object} context canvas
 * @param {string} t 渲染文字
 * @param {number} x 开始位置
 * @param {number} y 结束位置
 * @param {number} w 宽度
 */
function drawText2(context,t,x,y,w){

    var chr = t.split("");
    var temp = "";              
    var row = [];

    context.font = "20px Arial";
    context.fillStyle = "black";
    context.textBaseline = "middle";

    for(var a = 0; a < chr.length; a++){
        if( context.measureText(temp).width < w && context.measureText(temp+(chr[a])).width <= w){
            temp += chr[a];
        }//context.measureText(text).width  测量文本text的宽度
        else{
            row.push(temp);
            temp = chr[a];
        }
    }
    row.push(temp);

    for(var b = 0; b < row.length; b++){
        context.fillText(row[b],x,y+(b+1)*24);//字体20,间隔24。类似行高
    }

    // 只显示2行,加...
    /*for(var b = 0; b < 2; b++){
        var str = row[b];
        if(b == 1){
            str = str.substring(0,str.length-1) + '...';
        }
        context.fillText(str,x,y+(b+1)*24);
    }*/
}

 

基于canvas使用粒子拼出你想要的文字 写在最前本次分享一下使用canvas实现粒子效果拼出你想要的文字。欢迎关注我的博客,不定期更新中——起因不久之前看到大搜车团队出品的easy mock产品的界面中有一个使用粒子拼出“mock so easy”的效果,感觉非常有意思,就像下面这样: 当然了,这个easy mock的界面中还有粒子汇聚、散开、以及缓动等效果,这些在之后的文章中会不定时的更新实现思路。我当时看到这个效果的时候是一段单 阅读详情

相关推荐

封装canvas各种方法的vue组件

封装canvas各种方法的vue组件、文字、多行文字7矩形、图片功能的vue;canvas组件

HTTP访问 并得到返回结果 JSon

/**  * @author hongqian_li  *   */ public class Https {          /**      * @Description Https link and get Response conversion JSonObject      * @param url   Address of the interface  

a956959099的专栏 630

TortoiseGit之配置密钥

基于github的开发必须要用到rsa密钥,因此需要用到TortoiseGit的putty key generator工具,来生成既适用于github的rsa密钥也适用于TortoiseGit的ppk密钥。

欧文的博客 2082

canvas实现环形文本

环形文本 .pie { width: 580px; height: 118px; margin: 0 auto; } var title = "苏哲苏成长报告";//自定义文本内容 var canvas = document.getElementById('canvas'); var ctx = canvas.ge

susuzhe 5403

麒麟V10 x86_64系统下Qt 5.12.7安装全攻略(附常见报错解决方案)

本文详细介绍了在麒麟V10 x86_64系统上安装Qt 5.12.7的完整流程,包括在线和离线两种安装方案,并提供了常见报错的解决方案。从环境准备到项目配置优化,再到高级调试技巧,全面覆盖Qt开发在国产操作系统上的实践要点,帮助开发者高效搭建开发环境。

weixin_29294395的博客 508

机器视觉框架源码——解读5(Dock和开源UI)

本文介绍了工业软件中Dock工具面板的使用方法,主要包括三个部分:添加avalonDock引用、修改属性配置(如显示样式和背景色),以及通过MVVM命令实现布局的加载和保存。加载布局通过XmlLayoutSerializer从XML文件恢复界面状态,保存布局则将当前DockManager的布局序列化为XML文件。文章提供了代码示例和截图说明,帮助开发者快速掌握Dock面板的核心功能。

Z's Palace 403

canvas画圆,圆内有文字

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>canvas的使用&

mmiaoChong的博客 2149

四非人的保研之路,2024(2025届)四非计算机的保研经验分享(西南交通、苏大nlp、西电、北邮、山软、山计、电科、厦大等)

本身我就是福建人,xmu 3小时就能到家,然后导这边毕业要求容易,不想读博,达到要求就能放实习,每周打卡35h,比较自由,遂考虑。北邮弱com,联系了蛮多老师,几乎都给了考核机会,面试的老师好几位都考核人工智能基础,会问你卷积的计算,问的还是蛮细的。当时结果是暂定,以为是稳了,遂没联系其他老师,但是之后询问发现只是候补,懒得联系其他老师,928候补到,放弃。东北大学,2000人大机试,入营点送,全国巡回面试,每个人就面不到10分钟,我就被问了3个问题就结束了,候补。科研组,导师有人脉,想读博出成果可以去。

专注于AI领域前沿知识,业余爱好开发软件 4352

UniApp:方法篇:微信小程序海报生成和保存

UniApp在微信小程序中的Canvas画布操作 画布建立 建立画布 <!-- 禁止画布被拖动 --> <canvas canvas-id="posterid" style="width:300rpx;height:400rpx;" disable-scroll="true" @touchstart="" @touchmove="" @touchend="" > &lt

rxq134836的博客 2648

MATLAB - ROS 2 工具箱入门教程

ROS 工具箱提供了一个连接 MATLAB® 和 Simulink® 与机器人操作系统(ROS 和 ROS 2)的接口。利用该工具箱,您可以设计 ROS 节点网络,并将 MATLAB 或 Simulink 生成的 ROS 节点与现有的 ROS 网络相结合。工具箱包括 MATLAB 函数和 Simulink 块,可通过记录、导入和回放 rosbag 文件来可视化和分析 ROS 数据。您还可以连接到实时 ROS 网络,访问 ROS 消息。

机器人控制与仿真应用 3068

VMware Horizon 8 2111 部署系列(十一)准备RDS主机

RDS (Remote Desktop Service),即远程桌面服务。我们可以使用 Microsoft 远程桌面服务 (RDS) 提供 RDS 主机上的桌面会话并将应用程序传送给多个用户。

白昼的技术专栏 3471

koa2后台步骤(8)——功能列表实现(注册的API)

用户管理(登录注册) 用户设置(修改基本信息,修改密码,退出登录) 创建微博,暂不显示微博列表 个人主页,显示个人微博列表和个人信息,暂时不做关注 广场页(使用缓存) 关注和取消关注,显示粉丝和关注人 首页 @和回复 @提到我的 页面:模板和路由 数据建模 开发注册功能 开发登录功能 抽离loginCheck中间件 单元测试 模板和路由 回顾技术方案 查看模板代码 创建路由 注册 /api/use...

weixin_38245489的博客 996

C#上位机通信层封装:西门子S7NetPlus库的优雅使用

支持S7-1200/1500(机架号0,槽号1)、S7-300/400(机架号/槽号需根据实际配置);支持位(Bit)、字节(Byte)、字(Word)、双字(DWord)、浮点数(Float/Double)等数据类型的读写;支持DB块、输入寄存器(I)、输出寄存器(Q)、内存寄存器(M)、定时器(T)、计数器(C)的操作;轻量无依赖,兼容.NET 5+。首先定义核心枚举和常量,统一规范参数类型,避免硬编码。/// 西门子PLC型号(对应不同的机架/槽号默认配置)

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1085

canvas画布,绘制矩形、圆形、渐变色、图片、文字

画布 canvas元素是H5新增的一个重要元素,专门用来绘制图形。在页面中放置一个canvas元素,就相当于在页面上放置一块画布,可以利用canvas api在其中进行图形的描绘。canvas只是一个容器,不具备绘制能力,需要我们编写js代码实现 矩形 绘制矩形的步骤: 1. 取得canvas对象 2. 取得2d上下文(context) 3. 设定绘图样式,使用图形上下文对象中的fillStyle填充样式 strokeStyle 边框样式 4. 指定线宽,使用图形上下文对象中..

qq_51066068的博客 2688

PCL Alpha Shapes平面点云边界特征提取【2026最新版】

alpha shapes算法用于平面点云的边界特征提取。博客长期更新,本文最近一次更新时间为:2026年4月20日。

点云侠的博客 27万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

微信小程序2.9.0基础库canvas2D新API,生成海报保存到手机功能实现,包括文字换行,圆形图片,图片高度自适应等功能封装

WxCanvas 利用canvas微信小程序原生实现的一个绘制微信小程序海报的类,基础库版本>2.9.0。 下面链接中使用的api已被废弃,所以有了本文。 微信小程序生成海报保存到手机 使用场景 该类封装了一些小程序海报生成中常用的方法,方便快速根据设计稿完成画布,减少搬砖时间。除基础功能外支持以下使用: 多行文字绘制获得动态高度 图片定宽或者定高,另一边自适应 圆形图片绘制 npm源码 文末放全部代码 调用示例 js引入 这取决于你放在哪里,你可以使用npm,也可以直接复制文末源代码,然后直接引

页面仔的博客 2483

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

简单的封装微信小程序canvas库,可以像写css一样绘制canvas

文章目录介绍引入绘制一个矩形绘制一个圆形绘制图片绘制文字简单的动画保存图片到相册APIbox元素 cav.box(options)image元素 cav.image(options)text元素 cav.text(options)cav.ins()cav.draw(save)cav.saveImage()可能会更新:) 介绍 简单封装的微信小程序canvas库,可以像写css一样绘制canvas....

magic-zhu 2939

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

HTML:canvas画圆形加矩形组合

canvas画圆形加矩形组合

KaiSarH 781

canvas的基础使用

效果:默认颜色黑色,可以通过fillStyle设置进行自定义。方法类似,一个填充,一个属于描边。在 Canvas 中可以使用。方法可以对折线进行闭合。方法进行矩形填充,其实和。进行文本水平对齐方式设置。进行文本垂直对齐方式设置。类似,但是需要手动调用。3、等待图片加载完成。

记录工作 2148

canvas画图及圆形的头像

最近在做一个项目,是在mobile网页上生成海报,海报中有用户圆形头像、图标、图片、文字等信息,相对来说也比较复杂的一个海报。 问题: 一、画圆形头像时就遇到了圆形头像时被切割。 问题描述:在用canvas画圆形头像时,向画布右侧移动时,右边半个圆被切割了。 原因:给头像的画布位置有限,移出了画布的区域自然就被切割了,一开始用的是fill()去填充,总是会被切割。 改之前的代...

sunny327的专栏 2701

taro+canvas画圆形进度条+canvas转图片

/** * @name ProgresCanvas * @desc 进度条 * @author 方知有 * @taro 3.07 * @date 2020/08/06 */ import React, { Component } from "react"; import Taro from "@tarojs/taro"; import { View, Canvas, Image, CoverView } from "@tarojs/components"; import styles fro...

weixin_40532650的博客 2368

canvas绘制分享商品海报——已完成

记一次canvas经验,本次绘制生成分享海报,用到了绘制多张图片、绘制文字(颜色、换行显示)、绘制线条(颜色、粗细)、绘制圆形图片等。 以下的代码是需要写在draw函数里的 //html <canvas id="myCanvas" width="1000" height="1200">该浏览器不支持生成分享图片</canvas> //js function ...

ansheng02的博客 1386

canvas基本使用(获取画布、绘制矩形、清除屏幕内容、动画、绘制不规则图形、圆形、虚线、绘制文字、颜色渐变、设置阴影、渲染图片、变形偏移、canvas文档、Konva)

x1、y1为图片加载位置,即渲染图片的左上角坐标起点。设置起始坐标到终点坐标上的颜色,第一个参数为当前渐变的位置(0~1之间的小数,0表示起点,0.5表示中点,1表示终点,可设置多段,从0开始向1过程中设置的颜色渐变),第二个参数为颜色。设置虚线,接受一个数组,数组第一位为实线长度,第二位为虚线长度即空白的长度,第三位为实线长度,以此类推,然后用数组的内容循环设置线段的虚实。w为宽度,h为高度。设置线段连接处的样式,默认为miter为正常线性连接,round为连接处圆形,bevel为连接处底部为平的。

AIWWY的博客 4891

小程序canvas画圆形图片

brandPosster () { var diff1=60,diff2=30 let data = this.data.info let ctx = wx.createCanvasContext('c', this) let arr = [`${this.data.OSS_URL}/poster-bg.png`, data.logo, `${this.data.qrcode}`] ct...

qq_38698753的博客 933

【Canvas】画布,画圆、背景以及生成图片

【Canvas】画布,画圆、背景以及生成图片

时间飞逝的博客 4612

五、 canvas绘制线、矩形、圆、图片、文字

标签兼容性查询https://caniuse.com/ 1.canva能完成动画、游戏、图表、图像处理等原来需要Flash完成的功能,包括动态的2D和3D 2.画线 描边stroke 描边颜色strokeStyle 设置边宽度lineWidth 起点moveTo 终点lineTo &amp;lt;!--新建画布--&amp;gt; &amp;lt;canvas id=&quot;can&quot;&amp;gt;&amp;lt;/canvas&

云深不知处的博客 630
上一篇: 前端将html导出为word文档(原生js篇)
下一篇: 解决移动端IOS:input框输入完成,键盘关闭后位置上移问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值