vue动态设置文字布局方式_VUE+Canvas实现输入文字生成对应的字体图片小功能
你是不是经常浏览字体网站的时候,发现他们的“字体生成器”和预览功能很好奇,为什么输入框输入文字之后,点击预览,下面都会修改对应的字体内容,以便达到了没有安装字体也可以预览这个字体效果的目的。
原理哔哔:
其实这个功能不难,原理很简单,就是通过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实现输入文字生成对应的字体图片小功能相关推荐
- VUE+Canvas实现输入文字生成对应的字体图片小功能
你是不是经常浏览字体网站的时候,发现他们的"字体生成器"和预览功能很好奇,为什么输入框输入文字之后,点击预览,下面都会修改对应的字体内容,以便达到了没有安装字体也可以预览这个字体效 ...
- vue 动态设置div的高度_Vue 动态设置元素高度
1. Vue文件如下 let windowHeight = parseInt(window.innerHeight) export default { data() { return { window ...
- Vue动态设置Style属性
Vue动态设置Style属性_fuzhongbin的博客-CSDN博客_vue 动态style :style="{ color:domain.groups == 1? '#ccc': dom ...
- [vue] 怎么解决vue动态设置img的src不生效的问题
[vue] 怎么解决vue动态设置img的src不生效的问题 不是应该 require('@/assets/images/xxx.png') 这样吗??你这样多浪费资源啊 @chenqim 个人简介 ...
- vue 动态设置组件高度_高度动态的Vue明星评分组件
vue 动态设置组件高度 虚拟动态星级 (vue-dynamic-star-rating) A Highly Customizable, easy-to-use elegant stars ratin ...
- php输入文字不显示,ps写了文字为什么不显示 ps里输入文字不显示的四个原因及解决方法...
photoshop输入文字不显示,文字看不到怎么办?在使用ps时,经常要输入文字,有时可能会遇到,输入文字会没有显示出来,或是只有一个黑点的情况,这是什么原因造成的?应该如何解决呢?今天,小编为大家带 ...
- vue动态设置文字布局方式_详解Vue动态添加模板的几种方法
动态添加模板需要收集原始数据的页面,这个时候我们需要很多原始数据收集模板,下面给大家详解Vue 动态添加模板的几种方法,希望对你学习这方面知识有所帮助. 通常我们会在组件里的 template 属性定 ...
- vue动态设置文字布局方式_十大惊人的文字动画特效
本文阿宝哥将给大家介绍十个 「"惊人"」 的文字动画效果,希望阿宝哥精心录制的十个 Gif 动画能让大家感到 「"惊艳"」,当然更希望这些特效能给大家实现文字动 ...
- DevExpress.XtraReports报表,动态设置报表布局
本文描述的动态开发报表的方式已封装成DLL,现向外发布,需要请猛击这里. 引言 上回负责报表这块,说不能再像以前的项目一样的做报表了,以前项目300多张报表,一张一张的画,一张一张的写存储过程,工作量 ...
最新文章
- 吹灭蛋糕上蜡烛的节能小车
- 做好十足准备面字节跳动,五面都过了,HR告诉我这个原因我被刷了...
- 坑你没商量!盘点Java中最常见的事故现场,你都中过哪些招?
- 面积最大的全1子矩阵
- 【计算机网络】TCP/IP 模型与OSI参考模型的比较
- 不分享“年度报告”的人,多少有点难言之隐
- 问你个问题:50万存款算多吗?
- 利用varnish构建httpd缓存服务器
- 在C#中利用Keep-Alive处理Socket网络异常断开的方法 (转)
- Wpf 初学---01设计一个优美的注册界面
- 四川大学计算机网络实验,四川大学计算机网络实验报告
- 华创e路航固件_华创e路航地图
- 企业微信服务号注册认证支付接入流程
- webstorm下载破解
- 知乎爬虫请求头参数x-zse-96(代码可直接运行)
- 微信小程序跳转微信小店
- 电子邮票出售面临着两大困境
- 跨平台第三方平台登录和单点登录
- MATLAB中mat转换为xlsx表格数据
- 罗松-东文财-赵栋201771010112罗松《面向对象程序设计(java)》第十四周学习总结...