• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > HTML5 CANVAS:绘图状态和状态栈

HTML5 CANVAS:绘图状态和状态栈

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含HTML5 ,CANVAS等相关知识,匿名希望在学习及工作中可以帮助到您

HTML5 CANVAS:绘图状态和状态栈

  当我们在HTML5 canvas中使用2D上下文来绘制图形的时候,2D上下文会处于某种状态中。你可以通过操纵2D上下文的属性来设置这些状态,例如fillStyle属性和strokeStyle属性。所有的这些操作被称为2D上下文的state(状态)。

  有时候,我们在canvas上绘制图形的时候,经常需要改变2D上下文的状态。举例来说,你在绘制直线或矩形的时候需要一种strokStyle,在绘制下一条直线或矩形的时候需要另一种strokStyle。又或者是不同的填充色,旋转角度等等。

  我们不可能在绘制图形之前就设置好所有图形的状态,但是我们可以将当前的状态压栈到一个状态栈中。在这个状态栈中,最后压入的状态将最先被弹出。通过这种方式我们可以非常方便的恢复到前一次的绘图状态。

  HTML5 CANVAS绘图状态的例子
  将一个绘图状态进行压栈和出栈的方法如下:


context.save();     // 将一个状态压入状态栈中
 
context.restore();  // 将最前面的状态出栈,并设置到2d上下文中

      对于一个状态栈,你可以压入多个状态,然后在将它们依次弹出。来看下面的例子:

var canvas  = document.getElementById("ex1");
var context = canvas.getContext("2d");
context.fillStyle  ="#66ff66";
context.strokeStyle="#990000";
context.lineWidth  = 5;
context.fillRect  (5, 5, 50, 50);
context.strokeRect(5, 5, 50, 50);
context.save();
context.fillStyle = "#6666ff";
context.fillRect  (65, 5, 50, 50);
context.strokeRect(65, 5, 50, 50);
context.save();
context.strokeStyle = "#000099";
context.fillRect  (125, 5, 50, 50);
context.strokeRect(125, 5, 50, 50);
context.restore();
context.fillRect  (185, 5, 50, 50);
context.strokeRect(185, 5, 50, 50);
context.restore();
context.fillRect  (245, 5, 50, 50);
context.strokeRect(245, 5, 50, 50);   
复制代码

      上面的代码得到的结果如下:

985.png


  状态栈的用处
  状态栈对于改变canvas的合成模式,图形的转换设置和在需要回到以前设置的状态的场景中十分有用。

  通过保存和恢复合成模式或图形转换设置,你可以确保它们被正确的重置。否则,你要想恢复到以前设置的某种状态时十分困难的。

  2D上下文的状态有哪些?
  所有的2D上下文的属性都是可以保存和恢复的属性。你在恢复一个状态的时候,绘制区域并不会自动进行恢复。你恢复的仅仅是2D上下文的设置(属性值),这些设置包括:

  •   fillStyle

  •   font

  •   globalAlpha

  •   globalCompositionOperation

  •   lineCap

  •   lineJoin

  •   lineWidth

  •   miterLimit

  •   shadowBlur

  •   shadowColor

  •   shadowOffsetX

  •   shadowOffsetY

  •   strokeStyle

  •   textAlign

  •   textBaseline

  •   clipping区域

  •   转换矩阵



  上面的列表并不是完整的列表。还有更多的属性属于2D上下文状态的一部分。


以上就是HTML5 CANVAS:绘图状态和状态栈的内容,更多相关内容请关注微课江湖()!

您可能想查找下面的文章:

  • HTML5的本地存储
  • Define charset for HTML5 Doctype
  • HTML5 canvas如何绘制动态径向渐变
  • 如何使用HTML5 Canvas绘制动态线性渐变
  • HTML5 canvas如何实现马赛克的淡入淡出效果(代码)
  • HTML5 canvas中如何绘制图像
  • 如何使用HTML5 canvas实现图像的马赛克
  • html5 canvas实现简单的双缓冲
  • HTML5 Canvas 图形组合是如何实现的?附代码
  • HTML5 figure标签是什么意思?HTML5 figure标签的使用方法详解

相关文章

  • 2018-12-03HTML5 input number是什么?HTML5 input type的详细介绍(内附属性图)
  • 2018-12-03HTML5本地存储之Web Storage篇
  • 2018-12-03HTML5注册页面示例代码
  • 2018-12-03HTML5之8 __Canvas 文本
  • 2018-12-03canvas怎样做出黑色背景带特效碎屑烟花
  • 2018-12-03分享HTML5中10个经典的动画工具
  • 2018-12-03html5 mark标签是什么意思?html5 mark标签的作用又是什么?
  • 2018-12-03详细介绍7款炫酷的HTML5 Canvas动画特效
  • 2018-12-03HTML5实践-使用css装饰图片画廊的代码分享(二)
  • 2018-12-03用html5实现语音搜索框的方法_html5教程技巧

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • H5小游戏如何应用到广告中?什么场景使用效果最好?
    • 推荐8篇html5+JavaScript实例教程
    • html5中在可拖动元素或选取的文本放置在目标区域时触发的事件ondrop
    • HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
    • HTML5 Canvas组件绘制太极图案的图文代码详情
    • Webkit做到了HTML5方式的客户端数据库存储
    • HTML5新特性之WebNotifications
    • HTML5中对style属性的解释与规定
    • HTML5学习笔记之History API_html5教程技巧
    • 什么是HTML文件?HTML文件的初步认识

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有