前言

HTML5中的画布元素不只是能给文本着色或者添加阴影,你也可以用它来移动或操作位于画布区域中的元素对象。在本节中,我们将旋转位于画布中的元素对象。

准备工作

学习本节需要掌握之前的几节。如果跳过了之前的几节也没关系,你还可以参照完整代码来学习。

实现方式

一旦你完成了之前技巧中的画布设置步骤,那么实现旋转的基本步骤很简单。在函数开头添加一个rotate方法的调用。

你可能会发现位于画布上的文本向右旋转了。怎么回事?无论画布中含有什么元素,rotate方法默认会旋转整个画布。
画布的默认尺寸较小,为300px宽,150px高。修改画布中所含元素的尺寸属性不会影响画布尺寸,但会使画布中的元素对象失真。如果要修改画布及画布中元素的尺寸,可以通过在JavaScript中设置canvas.width和canvas.height属性来完成。

另外,因为整个画布自身被旋转了,但是文本旋转并没有围绕特定的参照点,因此文本位置需要被重新定位到正确位置。在本例子中,需要设置填充和笔画的偏移:

效果如下图所示。

工作原理

JavaScript能够通过rotate方法来旋转整个画布以及绘制在画布中的所有元素。只是在决定使用该方法时需要预先考虑所使用的场景和进行相关设置。虽然看起来有些复杂,但这不失为在大型web项目中实现响应式设计的理想工具。

HTML - Canvas 使用画布旋转文本相关推荐

  1. 04 canvas——位移画布和旋转缩放

    4.1 缩放 scale() 方法缩放当前绘图,更大或更小 语法:context.scale(scalewidth,scaleheight) scalewidth : 缩放当前绘图的宽度 (1=100 ...

  2. canvas rotate()画布的旋转详解

    刚才还是风和日丽的天,这没一会会就乌云密布了,雨呀,眼瞅就下来了呢,一场秋雨一场寒,感觉懂得要穿棉袄了的节奏 10月1号之前,还是T恤呢,10月放完国庆节和中秋节以后就开始毛衣.毛衫.毛外套了,这真的 ...

  3. html画布用函数旋转,canvas rotate()画布的旋转详解

    刚才仍是风和日丽的天,这没一会会就乌云密布了,雨呀,眼瞅就下来了呢,一场秋雨一场寒,感受懂得要穿棉袄了的节奏 10月1号以前,仍是T恤呢,10月放完国庆节和中秋节之后就开始毛衣.毛衫.毛外套了,这真的 ...

  4. android画布旋转,Android Canvas 平移、缩放、旋转的理解

    自己用了很久对这个几个方法,用了好多次了,但对它们的原理概念都还是没仔细理解清楚,真是太菜了. View和canvas并不是同一个东西,可以这样想象,我们的View是固定的,相当于与一个画框,画框范围 ...

  5. wPDF v5支持并改进旋转文本的逻辑

    wPDF v5支持并改进旋转文本的逻辑 特征 添加了对 GDI 线条样式(虚线.点和自定义样式)的支持. 改进了模拟 PDF 文件中顶部和底部文本对齐的逻辑. 改进了旋转文本的逻辑. wPDF 是一个 ...

  6. 【canvas 图形画布标签】(使用详解)

    canvas 图形画布标签 1. 如何定义一个 图形画布 ? 1.1 canvas 图形画布 标签的属性 有哪些 ? 1.2 canvas 图形画布的 基本用法 有哪些 ? 1.3 如何使用 canv ...

  7. Canvas之画布操作

    转载自:Gcsloop Github 一.Canvas的常用操作速查表 操作类型 相关API 备注 绘制颜色 drawColor, drawRGB, drawARGB 使用单一颜色填充整个画布 绘制基 ...

  8. Canvas(画布)、Paint(画笔) 详解

    一.自定义控件分类: 1.组合控件:将系统原生控件组合起来,加上动画效果,形成一种特殊的UI效果 2.纯粹自定义控件:继承自系统的View,自己去实现view效果 二.Canvas(画布).Paint ...

  9. android 画布旋转,Android-在安卓开发中,如何实现一个简单的图片旋转

    图像的旋转有很多方法,除了常见的使用动画和矩阵,还可以通过操作背景画布本身来旋转 现将正常的图像绘制到画布中,保存一次画布后整体旋转,然后再恢复画布,此时的图像便得到了旋转的效果,google 官方也 ...

最新文章

  1. 本地应用 v-for 指令
  2. 实时音视频聊天中超低延迟架构的思考与技术实践
  3. 窗口分析函数_4_计算累加值
  4. ASP.NET中过滤HTML字符串的两个方法
  5. Java提高学习之Object(3)
  6. 速抢中秋月饼和红包封面!
  7. 『软件测试3』八大典型的黑盒测试方法已来袭,快快接住!
  8. JS 给某个对象添加专属方法
  9. linux c++编译问题和虚拟机网络通信
  10. mysql lost connection to server during query
  11. Google浏览器Chrome安装失败,错误代码0xa0430721解决办法
  12. 同花顺 python量化交易_开启量化第一步!同花顺iFinD数据接口免费版简易操作教程...
  13. Java项目:基于SSM实现驾校预约管理系统
  14. 程序员的算法趣题 python3 - (4)
  15. 【linux】系统压力模拟工具stress
  16. 蓝牙设备类型cod(蓝牙class of device介绍)
  17. 中国电信最快apn里面的服务器,电信4g网速最快的apn接入点(电信4g承载系统哪个快)...
  18. Power BI 矩阵总计放表第一列
  19. scrapy框架学习之demo2
  20. 使用 Azure Monitor 快速构建 OS 内部指标监控平台

热门文章

  1. python 实例对象 浅拷贝_Python对象中的浅拷贝和深拷贝
  2. canvas人物动画—走路
  3. 网络通信PDU和SDU的区别
  4. Matlab2020b设计APP(GUI)并打包成可执行程序.exe
  5. 用Python 展示十二星座
  6. 绝地求生要java吗_《和平精英》还是《绝地求生》的手游吗?光子早就和我们说了答案...
  7. vue之computed带参数如何接收
  8. 雅点动态水波ps扩展面板破解版
  9. ObjectARX 足球算法
  10. 关于互联网域名注册管理机构审批情况的公示(截至2018年06月)