你是不是经常浏览字体网站的时候,发现他们的“字体生成器”和预览功能很好奇,为什么输入框输入文字之后,点击预览,下面都会修改对应的字体内容,以便达到了没有安装字体也可以预览这个字体效果的目的。

原理哔哔:

其实这个功能不难,原理很简单,就是通过js动态修改字体样式,然后用canvas渲染出字体,将图片的src路径替换,就实现了我们想要的目的。光说不练假把式,为了快速实现功能我没有用原生js或jquery,直接用了VUE的表单双向绑定特效,实现了:在线测试:https://course.51qux.com/fontcreat。

如下图:案例中我将文本内容、字体类型、字号、颜色都设置成允许用户自定义修改的表单,然后通过button点击事件绑定生成器的方法,最后生成的图片又绑定到img的src属性上。

实现步骤:

1.引入Vue文件,并写好HTML布局

微软雅黑

宋体

生成

2.绑定vue元素,设置data初始数据,实现功能:

var app = new Vue({

el:".wrapper",

data:{

msg:"你好,这里是测试的内容",

font:"微软雅黑",

fontSize:'18',

fontCor:"#000000",

imgSrc:''

},

methods:{

creatImg:function(){

this.drawLogo(this.msg,this.font);

},

drawLogo: function(text, font) {

// 创建画布

let canvas = document.createElement('canvas');

// 绘制文字环境

let context = canvas.getContext('2d');

// 设置字体

context.font = font;

// 获取字体宽度

let width = context.measureText(text).width;

// 如果宽度不够 240

if (width < 240) {

width = 600;

} else {

width = width + 30;

}

// 画布宽度

canvas.width = width;

// 画布高度

canvas.height = 80;

// 填充白色

context.fillStyle = '#ffffff';

// 绘制文字之前填充白色

context.fillRect(0, 0, canvas.width, canvas.height);

// 设置字体

context.font = this.fontSize+"px "+font;

// 设置水平对齐方式

context.textAlign = 'center';

// 设置垂直对齐方式

context.textBaseline = 'middle';

// 设置字体颜色

context.fillStyle = this.fontCor;

// 绘制文字(参数:要写的字,x坐标,y坐标)

context.fillText(text, canvas.width / 2, canvas.height / 2);

// 生成图片信息

let dataUrl = canvas.toDataURL('image/png');

this.imgSrc = dataUrl;

return dataUrl;

},

}

})

这样小功能就实现,七娃 很懒,就没有引入太多字体,仅仅用了大家电脑都有字体:雅黑和宋体,更多效果自行测试吧!哈哈哈,vue真的适合单页面开发,比jquery轻便多了。

vue动态设置文字布局方式_VUE+Canvas实现输入文字生成对应的字体图片小功能相关推荐

  1. VUE+Canvas实现输入文字生成对应的字体图片小功能

    你是不是经常浏览字体网站的时候,发现他们的"字体生成器"和预览功能很好奇,为什么输入框输入文字之后,点击预览,下面都会修改对应的字体内容,以便达到了没有安装字体也可以预览这个字体效 ...

  2. vue 动态设置div的高度_Vue 动态设置元素高度

    1. Vue文件如下 let windowHeight = parseInt(window.innerHeight) export default { data() { return { window ...

  3. Vue动态设置Style属性

    Vue动态设置Style属性_fuzhongbin的博客-CSDN博客_vue 动态style :style="{ color:domain.groups == 1? '#ccc': dom ...

  4. [vue] 怎么解决vue动态设置img的src不生效的问题

    [vue] 怎么解决vue动态设置img的src不生效的问题 不是应该 require('@/assets/images/xxx.png') 这样吗??你这样多浪费资源啊 @chenqim 个人简介 ...

  5. vue 动态设置组件高度_高度动态的Vue明星评分组件

    vue 动态设置组件高度 虚拟动态星级 (vue-dynamic-star-rating) A Highly Customizable, easy-to-use elegant stars ratin ...

  6. php输入文字不显示,ps写了文字为什么不显示 ps里输入文字不显示的四个原因及解决方法...

    photoshop输入文字不显示,文字看不到怎么办?在使用ps时,经常要输入文字,有时可能会遇到,输入文字会没有显示出来,或是只有一个黑点的情况,这是什么原因造成的?应该如何解决呢?今天,小编为大家带 ...

  7. vue动态设置文字布局方式_详解Vue动态添加模板的几种方法

    动态添加模板需要收集原始数据的页面,这个时候我们需要很多原始数据收集模板,下面给大家详解Vue 动态添加模板的几种方法,希望对你学习这方面知识有所帮助. 通常我们会在组件里的 template 属性定 ...

  8. vue动态设置文字布局方式_十大惊人的文字动画特效

    本文阿宝哥将给大家介绍十个 「"惊人"」 的文字动画效果,希望阿宝哥精心录制的十个 Gif 动画能让大家感到 「"惊艳"」,当然更希望这些特效能给大家实现文字动 ...

  9. DevExpress.XtraReports报表,动态设置报表布局

    本文描述的动态开发报表的方式已封装成DLL,现向外发布,需要请猛击这里. 引言 上回负责报表这块,说不能再像以前的项目一样的做报表了,以前项目300多张报表,一张一张的画,一张一张的写存储过程,工作量 ...

最新文章

  1. 吹灭蛋糕上蜡烛的节能小车
  2. 做好十足准备面字节跳动,五面都过了,HR告诉我这个原因我被刷了...
  3. 坑你没商量!盘点Java中最常见的事故现场,你都中过哪些招?
  4. 面积最大的全1子矩阵
  5. 【计算机网络】TCP/IP 模型与OSI参考模型的比较
  6. 不分享“年度报告”的人,多少有点难言之隐
  7. 问你个问题:50万存款算多吗?
  8. 利用varnish构建httpd缓存服务器
  9. 在C#中利用Keep-Alive处理Socket网络异常断开的方法 (转)
  10. Wpf 初学---01设计一个优美的注册界面
  11. 四川大学计算机网络实验,四川大学计算机网络实验报告
  12. 华创e路航固件_华创e路航地图
  13. 企业微信服务号注册认证支付接入流程
  14. webstorm下载破解
  15. 知乎爬虫请求头参数x-zse-96(代码可直接运行)
  16. 微信小程序跳转微信小店
  17. 电子邮票出售面临着两大困境
  18. 跨平台第三方平台登录和单点登录
  19. MATLAB中mat转换为xlsx表格数据
  20. 罗松-东文财-赵栋201771010112罗松《面向对象程序设计(java)》第十四周学习总结...

热门文章

  1. 华为关闭telnet命令_华为AR28-11路由器如何关闭telnet服务?
  2. html代码 col,html元素col标签的使用方法及作用
  3. 微信小程序之canvas画布
  4. 东软实训心得:做事务的主宰者
  5. 复盘2022,不好意思,成为区块链专家也不一定能挣钱
  6. 江苏省公务员计算机类130分,130分,在江苏省考中是什么水平?
  7. 三条建议!让您在世界杯期间确保网络安全!
  8. PT100温度传感器调试
  9. 掘金插件,搞了个掘金数据监控桌面应用,还不快用起来!
  10. 可变长子网掩码划分案例