canvas文字自动换行圆角矩形画法生成图片手机长按保存(代码片段)

wanan-01 wanan-01     2022-12-22     608

关键词:

canvas的文字自动换行函数封装

//            str:要绘制的字符串
//            canvas:canvas对象
//            initX:绘制字符串起始x坐标
//            initY:绘制字符串起始y坐标
//            lineHeight:字行高,自己定义个值即可
            function canvasTextAutoLine(str,canvas,initX,initY,lineHeight)
                var ctx = canvas.getContext("2d"); 
                var lineWidth = 0;
                var canvasWidth = canvas.width; 
                var lastSubStrIndex= 0; 
                for(let i=0;i<str.length;i++) 
                    lineWidth+=ctx.measureText(str[i]).width; 
                    //减去initX,防止边界出现的问题
                    if(lineWidth>canvasWidth-initX*2.3)
                        ctx.fillText(str.substring(lastSubStrIndex,i),initX,initY);
                        initY+=lineHeight;
                        lineWidth=0;
                        lastSubStrIndex=i;
                     
                    if(i==str.length-1)
                        ctx.fillText(str.substring(lastSubStrIndex,i+1),initX,initY);
                    
                
          

vanvas画圆角矩形的函数封装

// 封装的一个用于绘制圆角矩形的函数.
            function roundedRect(x,y,width,height,radius,color,type)
              var ctx=this.ctx;
              ctx.beginPath();
              ctx.moveTo(x,y+radius);
              ctx.lineTo(x,y+height-radius);
              ctx.quadraticCurveTo(x,y+height,x+radius,y+height);
              ctx.lineTo(x+width-radius,y+height);
              ctx.quadraticCurveTo(x+width,y+height,x+width,y+height-radius);
              ctx.lineTo(x+width,y+radius);
              ctx.quadraticCurveTo(x+width,y,x+width-radius,y);
              ctx.lineTo(x+radius,y);
              ctx.quadraticCurveTo(x,y,x,y+radius);
              ctx[type+‘Style‘] = color;
              ctx.closePath();
              ctx[type]();
            

直接在html中用canvas画好的图,在手机端是不能实现直接长按保存到相册的。这里给出一种方法是:把canvas画好的图变成链接,引入img中,canvas隐藏,这样实现了canvas画图手机长按保存的效果。在这里,记录一个过程中遇到的问题,直接用设计稿的尺寸来定义画布大小,如果尺寸太大的话,手机上打开(只是说canvas画好的图未经过任何处理)会出现放不开的情况,只有手动缩放才能正常显示。遇到这个问题,尝试过canvas的缩放,不好使,最后也是通过上面的方法来解决的。

canvas导出位图片

var canvas = document.getElementById(‘mycanvas‘);
var urlimg=canvas.toDataURL(‘image/png‘, 0.92);
document.getElementById("test").src = urlimg;

 

canvas绘制圆形图片绘制圆角矩形图片?(代码片段)

...在Canvas中我们常常遇到的一个需求绘制一个圆形或者一个圆角矩形图像,常用于展示用户头像,我们知道CSS有border-radius属性,但是Canvas是没有的~?? 很尴尬,我们就来瞅瞅怎么整出一个圆形头像~Part.1 效果圆形头像 圆... 查看详情

canvas转图片中的文字自动换行(代码片段)

概述最近项目用到了canvas转图片,但是由于canvas对文字排版的支持非常弱,一般我们在canvas上画不同排版的文字(比如竖排文字)都是利用js计算横纵坐标,然后一个字一个字地画出来,今天无意中看到一个使用svg的方法,记录... 查看详情

canvas图片圆角问题(代码片段)

...canvas设置边框问题之后碰到的第4个问题。OriginMyGitHub图片圆角问题如果只是想要显示圆角的效果,设置border-radius就可以了,但如果要让canvas合成的图片显示为圆角,这种css方式不行。这是示例,扫描访问二维码如下。在网上查... 查看详情

canva绘制圆角矩形(代码片段)

在做组态的时候,需要支持矩形圆角格式,但是因为canvas本身不带有圆角矩形,需要自行算出坐标进行绘制方案一、统一圆角<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>canvas制作圆角矩形(包括填充矩形的功... 查看详情

canvas生成圆角图片(头像等)(代码片段)

canvas生成圆角图片(头像等)circleImg(ctx,img,x,y,r)ctx.save();vard=2*r;varcx=x+r;varcy=y+r;ctx.arc(cx,cy,r,0,2*Math.PI);ctx.clip();ctx.drawImage(img,x,y,d,d);ctx.restore(); 查看详情

canvas绘制圆角矩形

参考技术A首先声明一个自定义函数然后在绘制的时候调用该函数,效果图: 查看详情

canvas——绘制圆角矩形之详解

  Canvas并没有提供绘制圆角矩形的方法,但是通过观察,我们可以发现,其实我们可以将圆角矩形分为四段,可以通过使用arcTo来实现。    我们假设起点为x,y.绘制的矩形宽高为w,h.圆角的半径为r;所以将起点设置在(x+r,y)处&#x... 查看详情

如何在 Canvas 中制作药丸形状? (基本上是圆角矩形)

】如何在Canvas中制作药丸形状?(基本上是圆角矩形)【英文标题】:HowtomakeapillshapeinCanvas?(roundedcornerrectbasically)【发布时间】:2012-03-3009:24:02【问题描述】:正在玩一个突破性的克隆并想要制作圆角通电。有人能指出正确的方... 查看详情

canvas——绘制圆角矩形之详解

  Canvas并没有提供绘制圆角矩形的方法,但是通过观察,我们可以发现,其实我们可以将圆角矩形分为四段,可以通过使用arcTo来实现。    我们假设起点为x,y.绘制的矩形宽高为w,h.圆角的半径为r;所以将起点设置在(x+r,y)处&#x... 查看详情

微信小程序使用canvas绘制圆角矩形在android:变形、锯齿

参考技术A在微信小程序使用canvas绘制圆角矩形时,在Android出现变形、锯齿现象,而iOS正常。根据小程序社区回复:使用ctx.arc+ctx.lineTo就能避免Android错误,Android只使用ctx.arcTo不兼容!!!解决方案: 查看详情

java邀请卡生成工具,微信嵌入头像(圆角),图片,文字(代码片段)

查看详情

html2canvas文字重叠(手机端)

发现情况:1.设置文字居中,文字自动换行后文字有重叠  text-align:center;  解决办法: text-align: left; text-align:justify;等2.使用了“ /” 分开语句。“/”可能与后面的字重叠解决办法:使用全角来编... 查看详情

div里面文字不自动换行

div里面文字不自动换行谁能告诉我,我照着视频教学写的,为什么视频里面的文字换行了,我的就不行在#div1中加入以下代码word-wrap:break-word;允许长单词换行到下一行:参考技术A可能是你胡乱打的事,你正常的输入一定长度的字... 查看详情

canvas怎么画一个渐变的圆角边框,填充的也行

参考技术APS制作渐变圆角矩形:方法一:1、用路径工具里的圆角矩形工具拉出矩形;2、按住ctrl(控制键)的同时按回车,把路径图形转换成蚂蚁线选区;3、不要取消选区用渐变工具在选区内拉出你要的渐变色彩!方法二:1、用路径... 查看详情

html5中canvas通过js绘制圆角矩形

添加绘制圆角矩形的方法,核心代码如下:/***x起始X坐标(必须)*y其实Y坐标(必须)*w矩形宽度(必须)*h矩形高度(必须)*r矩形圆角半径(可选,默认为0)*b矩形边框宽度(可选,默认为1)*c矩形边框颜色(可选,默认"#F... 查看详情

android中为图片生成卷角+圆角缩略图的方法(代码片段)

Android中为图片生成卷角+圆角缩略图的方法在Android的一些界面中,有时候我们需要为一副图片生成大小为n*n的缩略图,有时候需要的缩略图特殊一些,比如:1、带圆角的缩略图:如果我们需要带圆角的缩略... 查看详情

delphicanvas的textout如何自动换行?

...因素。如果你的要求是直接在画布上绘出可以自动换行的文字,你可以考虑用DrawText来实现,下面是实现代码://delphiXE中编译通过procedureTForm1.Button1Click(Sender:TObject);conststr='汉字进行自动换行汉字进行自动换行汉字进行自动换... 查看详情

excel中如何让文字自动换行?

若想要实现单元格内文字自动换行,可以进行如下操作。比如,下图中的表格,不能自动换行。请点击输入图片描述请点击输入图片描述2先选中表格;这个时候,文档上方的菜单栏中显出了“布局”选项卡;请点击输入图片描... 查看详情