首页 > 其他分享 >canvas文字的渲染问题

canvas文字的渲染问题

时间:2024-01-24 16:24:27浏览次数:26  
标签:文字 canvas const 渲染 ctx fontFaces 100

1.简单的文字绘制,包括文字的一些样式的设置

canvas的默认字体是 ‘10px sans-serif’

我们可以通过如下语句进行文字的设置

const fonts=‘bold italic’ //倾斜加粗

const name=‘宋体’

const size=‘14’

const text=‘canvas总结’

const ctx = document.getElementById("canvas").getContext("2d"); ctx.save() ctx.beginPath() ctx.font = `${fonts} ${size}pt "${name}"`//设置字体大小名称倾斜加粗
ctx.textAlign = "left" || "right" || "center" || "start" || "end"//文本对齐的样式
ctx.textBaseline = "top" || "hanging" || "middle" || "alphabetic" || "ideographic" || "bottom";//设置字体基线对齐样式
ctx.fillStyle = '#000'//设置字体颜色
ctx.measureText(text);//可以测量文字的宽度
ctx.direction = "ltr" || "rtl" || "inherit";//设置文本的绘制方向,从左到右,从右到左,继承
 ctx.fillText(text, 0, 100)//数字指的是位置信息,在那个位置绘制文字
ctx.strokeText("Hello world", 0, 100);//绘制空心的文字
 ctx.restore()

2.文字的旋转问题

可以参考这个https://blog.csdn.net/a460550542/article/details/122062840

//水平文字的绘制

 const ctx = document.getElementById("canvas").getContext("2d");

ctx.fillStyle='green'

ctx.fillText('canvas总结',100,100)

ctx.save()

ctx.translate(100,100)//旋转点为正常绘制水平文字的起始点为旋转中心

ctx.rotate((90 * Math.PI) / 180)//设置旋转角度 ctx.fillStyle='red' ctx.fillText('canvas总结',0,0)  ctx.restore() //以中心点为旋转中心 let strWidth=ctx.measureText('canvas总结').width

ctx.save()

ctx.translate(100+strWidth/2,100-strWidth/2)//旋转点为正常绘制水平文字的起始点为旋转中心

ctx.rotate((90 * Math.PI) / 180)//设置旋转角度 ctx.fillStyle='blue' ctx.fillText('canvas总结',0,0)  ctx.restore()  3.canvas远程字体加载  const fontFacesPrevRef = useRef<any>() const fontFaces =['宋体','微软雅黑','幼圆'] const isResolved = isMatch(fontFacesPrevRef.current, fontFaces || []) && fontResolved     console.info(isResolved, flag, fontFaces?.length, '发版远端验证字体加载流程用')     if (!isResolved && fontFaces?.length && flag) {       //已经加载过的字体没必要再加载一次,过滤出不同的字体,开档后diff是[]
      const diff = difference(fontFaces, fontFacesPrevRef.current)       // const diff = fontFaces.filter(item => {       //   return fontFacesPrevRef.current && fontFacesPrevRef.current?.indexOf(item) < 0       // })       let observers       if (diff.length) {         observers = diff.map(item => {           return new FontFaceObserve(item).load()         })       } else {         //开档的情况         observers = fontFaces.map(item => {           return new FontFaceObserve(item).load()         })       }       Promise.allSettled(observers).then(res => {         if (res) {           reDraw()         }       })       // 加载失败的暂未处理,尝试再次添加到observers中,但是依旧加载不成功       fontResolved = observers.length > 0     }     fontFacesPrevRef.current = fontFaces

标签:文字,canvas,const,渲染,ctx,fontFaces,100
From: https://www.cnblogs.com/aleifighting/p/17984950

相关文章

  • 效果图云渲染活动“喜迎龙年,渲染有礼”正式上线
    Renderbus瑞云渲染在2024年新年之际,特别推出了一个促销活动以庆祝“龙年”,并作为回馈给致力于效果图制作的客户们。在这次活动中,客户们可以在充值期间获得一些可通用的渲染券,这些券可以在后续进行影视动画或效果图渲染时使用。让我们一探究竟,看看此次优惠活动都包含哪些内容。......
  • 获取猜你喜欢数据,类型定义和列表渲染
    1.封装获取猜你喜欢数据API2.组件挂载完毕调用API这个是接口文档:  下面: 组件内部获取数据,我们其他的都是在index.vue里面获取的: 我们来看一下数据,可以看到数据很多(items商品信息): 定义数据类型: 这里的分页我们其他地方也会用到,因此我们把他定义成一个通用的类......
  • 通过CanvasRenderer.SetColor和Image.color修改UI组件颜色的区别
    1)通过CanvasRenderer.SetColor和Image.color修改UI组件颜色的区别2)OPPO相关机型没法在Unity启用90或120FPS3)手机输入法中的emoji4)UnityApplicationPatching怎么用这是第369篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面......
  • P5734 【深基6.例6】文字处理软件
    1.题目介绍【深基6.例6】文字处理软件题目描述你需要开发一款文字处理软件。最开始时输入一个字符串作为初始文档。可以认为文档开头是第\(0\)个字符。需要支持以下操作:1str:后接插入,在文档后面插入字符串\(\texttt{str}\),并输出文档的字符串;2ab:截取文档部分,只保留文档......
  • 无涯教程-CSS - 文字效果
    您可以使用CSS过滤器将特殊效果添加到文本,图像和网页的其他方面,而无需使用图像或其他图形。AlphaChannelAlpha通道滤镜会更改对象的透明度,从而使其融合到背景中,以下参数可以在此过滤器中使用-Sr.No.Parameter&Remark1opacity透明度。0是完全透明的,100是完全不透明的......
  • 前端歌谣-第六十五课-express之服务端渲染和客户端渲染
    前言我是歌谣微信公众号关注前端小歌谣一起学习前端知识今天继续给大家讲解服务端渲染和客户端渲染静态资源的讲解案列index.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,init......
  • MFC OnPaint 绘制一行简单文字
    ▲绘制一行简单文字OnPaint()消息。voidCMFCApplication6Dlg::OnPaint(){CPaintDCcdc(this);/***OnPaint绘制简单文字*****/cdc.TextOutW(100,100,TEXT("你好,MFC!")); if(IsIconic()) { CPaintDCdc(this);//用于绘制的设备上下文 SendMessa......
  • 「云渲染C4D」C4D如何进行云渲染?
    云渲染C4D的过程可现实一键式完成,目前云渲染平台随着技术的发展,平台的使用越发容易操作,无论是渲染文件的传输性、安全性、高效性都有较大的提升,本次为大家简单说明下关于云渲染操作方法。(图源网络)C4D云渲染流程第一步:准备渲染文件通过本地电脑上完成个人建模,确保C4D项目文件......
  • python文字转语音
    abc.txt我喜欢唱跳rap&篮球importosimportpyttsx3#创建一个TTS引擎engine=pyttsx3.init()voices=engine.getProperty('voices')forvinvoices:print("ID:",v.id)print("Name:",v.name)print("Languages:",......
  • 获取前台分类数据,数据类型和渲染
    1.封装获取前来分类数据API接口文档 把这个接口写入程序 接下来主页调用 验证是否获取数据成功 ......