threejsjquery 的支持下,可以在三维空间里创建文字精灵,精灵模型始终面向用户,支持中文。参考代码如下:


// 创建文字精灵
var getTextCanvas = function ( text, opt ) {var option = {fontFamily: 'Microsoft Yahei',fontSize: 40,fontWeight: 'normal',lineHeight: 1.4,  // g 字符的空间color: '#000000',borderWidth: 4,borderRadius: 6,borderColor: 'transparent',backgroundColor: 'transparent',}, canvas, context, textWidth, texture, materialObj, spriteObj;$.extend( option, opt );canvas = document.createElement('canvas');context = canvas.getContext('2d');context.font = option.fontWeight + ' ' + option.fontSize + 'px ' + option.fontFamily;textWidth = context.measureText( text ).width;context.fillStyle  = option.backgroundColor;context.strokeStyle = option.borderColor;context.lineWidth = option.borderWidth;setBackground(context, option.borderWidth * 0.5, option.borderWidth * 0.5, textWidth + option.borderWidth,option.fontSize * option.lineHeight + option.borderWidth, option.borderRadius);context.fillStyle = option.color;context.fillText(text, option.borderWidth, option.fontSize + option.borderWidth);texture = new THREE.Texture(canvas);texture.needsUpdate = true;materialObj = new THREE.SpriteMaterial({map: texture, color: 0xffffff});spriteObj = new THREE.Sprite( materialObj );spriteObj.scale.set(30, 20, 20);function setBackground(ctx, x, y, w, h, r) {ctx.beginPath();ctx.moveTo(x+r, y);ctx.lineTo(x+w-r, y);ctx.quadraticCurveTo(x+w, y, x+w, y+r);ctx.lineTo(x+w, y+h-r);ctx.quadraticCurveTo(x+w, y+h, x+w-r, y+h);ctx.lineTo(x+r, y+h);ctx.quadraticCurveTo(x, y+h, x, y+h-r);ctx.lineTo(x, y+r);ctx.quadraticCurveTo(x, y, x+r, y);ctx.closePath();ctx.fill();ctx.stroke();}return spriteObj;}

使用threejs和canvas创建中文文字精灵相关推荐

  1. THREEJS在场景图上动态标识一些文字方法二(文字精灵sprite)

    threejs文字精灵sprite的实现 1.手动添加文字精灵 2.通过json动态获取文字精灵,并进行交互 3.point模型只表示位置 4.CircleGeometry实现 5.3.PlaneGe ...

  2. three.js给模型添加动态的文字精灵(vue)

    1.创建2D文字canvas makeLabelCanvas(baseWidth, size, name) {const borderSize = 2;const ctx = document.cre ...

  3. 【OpenCV 例程200篇】23. 图像添加中文文字

    [OpenCV 例程200篇]23. 图像添加中文文字 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 OpenCV ...

  4. 【OpenCV 例程200篇】22. 图像添加非中文文字

    [OpenCV 例程200篇]22. 图像添加非中文文字 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 函数 cv2 ...

  5. uniapp canvas 图片加上文字合成一张新图并保存到手机相册

    uniapp canvas 图片加上文字合成一张新图并保存到手机相册 背景图上是奖章徽章,中间加上自定义文本,我这个图是因为背景图上原来就有字,随便找的,所以跟我写的文字层叠了 具体实现代码 < ...

  6. java设置text字体颜色_java itext添加中文文字和设置文字颜色

    java itext添加中文文字和设置文字颜色 下面是示例代码 import java.io.FileOutputStream; import java.io.IOException; import ...

  7. 从头开始创建背景和精灵

    您将要创造的 在本系列的前一部分中,我对Scratch及其使用的主要组件进行了介绍. 在这一部分中,我们将通过添加背景和一些精灵来开始创建项目. 在Scratch中,背景和精灵是资产. 资产还包括服装 ...

  8. js 最简单的方法使用canvas创建水印图片

    js 最简单的方法使用canvas创建背景水印 /*** 文字水印* @param {any} text */ function watermark(text) {//创建画布var dom = do ...

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

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

最新文章

  1. APP多版本共存,服务端如何兼容?
  2. 一看你就懂,超详细java中的ClassLoader详解
  3. ZedGraph怎样在生成曲线时随机生成不一样的颜色
  4. memcached(九)--LRU
  5. DBUtils、连接池
  6. 前端分辨pc和移动端导入不同css
  7. Spring Boot 2.4.0 全新发布,还不快来实战
  8. 每天2分钟,10个简单方法改变你的生活
  9. linux 的 grep 命令 和 ngrep 命令
  10. mysql索引的使用及优化方法_MySQL中索引和优化的用法总结
  11. 关羽第三方证书导入的CASE
  12. 520这个日子就应该用程序员最浪漫的表白方式
  13. 黑客入侵效果网页html,满屏绿字滑下效果
  14. 因果推断与反事实预测——利用DML进行价格弹性计算(二十四)
  15. 电脑更换硬盘 | 怎么迁移数据到新硬盘?
  16. 有没有好人看看,谢谢谢谢
  17. mysql基础架构(一条update语句如何执行)
  18. 一粒云文控模块使用心得
  19. 数据的家——MySQL的数据目录
  20. 微软模拟飞行10厦门航空涂装_微软飞行模拟:新手技巧攻略,新手技巧介绍

热门文章

  1. 用于AD620系列仪表放大器的RFI抑制电路
  2. 第12周项目4—点、圆的关系
  3. UR3机械臂+Realsense D435+ROS手眼标定记录
  4. 我们都忽略了Html5的力量,如果只看成一种技术就大错特错了!
  5. [cf] 752 div2 B. XOR Specia-LIS-t
  6. influx配置文件详解
  7. 和平精英苹果系统显示服务器暂未开放,和平精英苹果更新不了 苹果无法进行版本更新如何解决...
  8. 一份实用的seo整体优化方案
  9. 所有程序中的java在哪里设置密码_关于安全性:如何在桌面客户端应用程序(Java)中存储密码和敏感数据?...
  10. CPU密集型与IO密集型