第一、介绍Canvas
canvas能做什么?
canvas是HTML5中的新元素,你可以使用javascript用它来绘制图形、图标、以及其它任何视觉性图像。它也可用于创建图片特效和动画。如果你掌握了完整的命令,你可以用canvas创建丰富的web应用程序。如果你想很好的使用canvas,你首先应该很好的掌握javascript。
canvas标签
<canvas width="400" height="300">
</canvas>
当然你也可以通过css来设定!如果你不设定宽高,默认宽高是300*150。
对于低版本的浏览器,你把需要反馈的信息放到canvas标签之间。
<canvas width="400" height="300">
<p>你想看我,就升级浏览器吧!</p>
</canvas>
获取上下文,你所有的绘画操作都是在上下文,目前只支持2d。
window.onad=function(){
var canvas = document.getElementById("myCanvas");
var context= can.getContext("2d");
}
针对Retina显示屏
让canvas清晰的显示在Retina上,以及标准清晰度显示器很简单,只要通过屏幕的像素密度确定的比例乘以canvas就行。首先,你需要了解的像素值如何存储在一个canvas上。
后备存储就是在canvas上存储数据的每个像素的颜色值。我们的目标是为每个显示在画布上的像素在后背存储中提供一个像素。在像素被推到屏幕上之前,它们的值在这里计算。然而,在后备存储器为代表的像素的数量可能不等于象素的数目推到屏幕上。对Retina设备,canvas的宽度和高度被加倍,以维持一致的大小和相对于其他HTML元素的位置,并且作为一个结果,它延伸并模糊了其内容。为了抵消这种伸展,你需要加倍的后备存储时,适当的宽度和高度。
如果你正在处理的光栅图像或视频数据,找出如何进一步优化画布, Retina显示屏的“像素处理。 ”因为在任何情况下一个更大的画布未必有利,你需要选择优化你的Canvas为了Retina设备。首先,确定显示器呈现你的画布是否确是Retina口径。如果是,按照该设备的像素比例缩放后备存储。
一方面视网膜器件有一个2的像素比例,因为有一个2:1的比例的显示像素,以在x和y方向上的后备存储像素。在另一方面,标准清晰度的显示器,映射1的后备存储像素到1显示像素,所以它们的设备的像素比例将始终是1。
在JavaScript中,你可以决定后备比例的因素。首先,看浏览器是否已经定义了window.devicePixelRatio。如果该设备的像素比例大于1时,用户是一个Retina显示器上。确定合适的后备比例的代码如下:
window.onload=function(){
var canvas = document.getElementById("myCanvas");
var context= canvastContext("2d");
var scaleFactor = backingScale(ctx);
if (scaleFactor > 1) {
canvas.width = canvas.width * scaleFactor;
canvas.height = canvas.height * scaleFactor;
// update the context for the new canvas scale
var context = canvas.getContext("2d");
}
}
function backingScale(context) {
if ('devicePixelRatio' in window) {
if (window.devicePixelRatio > 1) {
return window.devicePixelRatio;
}
}
return 1;
}
第一、介绍Canvas的更多相关文章
- 通过游戏学javascript系列第一节Canvas游戏开发基础
本节教程通过一个简单的游戏小例子,讲解Canvas的基础知识. 最终效果: 点击移动的方块,方块上的分数会增加,方块的行进方向会改变,并且方块的速度会增加. 在线演示 源码 HTML5引入了canva ...
- canvas 基本介绍
# canvas 基本功能介绍 - canvas 能做什么 1. 绘制简单图形线条 2. 裁剪图片 - 开始绘制画布 新建html文档添加 canvas标签 ```html <div style ...
- HTML5中canvas介绍
1.什么是Canvas canvas 是 HTML5 提供的一个用于展示绘图效果的标签 canvas 提供了一个空白的图形区域,可以使用特定的JavaScript API来绘画图形(canvas 2D ...
- canvas学习和面向对象(二)
Canvas 学习(二) 上一篇Canvas 学习(一)中我是用canvas绘制了一些基本和组合的图形. 现在开始绘制图片和动画帧,以及面向对象的升级版本. 还是一样,看代码,所有的代码都托管在git ...
- 【温故而知新-Javascript】使用canvas元素(第二部分)
本文将继续介绍canvas的功能,展示如何绘制更复杂的图形(包括圆弧和曲线),如何使用剪裁区域来限制操作以及如何绘制文本.还是介绍可以应用在画布上的特效和变换,包括阴影.透明度.旋转和坐标重映射. 1 ...
- 【高级功能】使用canvas元素(第二部分)
本文将继续介绍canvas的功能,展示如何绘制更复杂的图形(包括圆弧和曲线),如何使用剪裁区域来限制操作以及如何绘制文本.还是介绍可以应用在画布上的特效和变换,包括阴影.透明度.旋转和坐标重映射. 1 ...
- H5 canvas圆形的时钟
今天用H5中的canvas标签做一个时钟,H5中有很多好用的新增标签,真的很不错. 1.canvas标签介绍 <canvas> 标签定义图形,比如图表和其他图像,你必须使用脚本来绘制图形. ...
- canvas图形处理和进阶用法
前面的话 上一篇博客介绍了canvas基础用法,本文将更进一步,介绍canvas的图形处理和进阶用法 图形变换 图形变换是指用数学方法调整所绘形状的物理属性,其实质是坐标变形.所有的变换都依赖于后台的 ...
- canvas粒子系统的构建
前面的话 本文将从最基本的imageData对象的理论知识说开去,详细介绍canvas粒子系统的构建 效果演示 下面是实例效果演示,博文结尾有全部源码 imageData 关于图像数据imageDat ...
随机推荐
- arduino驱动安装
方法一:使用官方提供的一键安装程序安装 打开Arduino在你电脑上的位置如果你的电脑是32位系统,就运行dpinst-x86.exe如果是64位系统,就运行dpinst-amd64.exe然后在弹出 ...
- linux一切皆文件之tty字符设备(深入理解sshd创建pty的过程) (五)
一.知识准备 1.在linux中,一切皆为文件,所有不同种类的类型都被抽象成文件(比如:块设备,socket套接字,pipe队列) 2.操作这些不同的类型就像操作文件一样,比如增删改查等 3.块设备支 ...
- python 游戏(船只寻宝)
1. 游戏思路和流程图 实现功能:船只在可以在大海上移动打捞宝藏,船只可以扫描1格范围内的宝藏(后续难度,可以调整扫描范围,可以调整前进的格数) 游戏流程图 2. 使用模块和游戏提示 import r ...
- [2017BUAA软工助教]结对项目小结
2017BUAA结对项目小结 一.作业链接 http://www.cnblogs.com/jiel/p/7604111.html 二.评分细则 1.注意事项 按时间完成并提交--正常评分 晚交一周以内 ...
- linux内核分析第二周
网易云课堂linux内核分析第二周 20135103 王海宁 <Linux内核分析>MOOC课程http://mooc.study.163.com/cours ...
- 20135202闫佳歆--week6 进程的描述与创建--学习笔记
此为个人学习笔记存档! week 6 进程的描述与创建 一.进程的描述 1.进程控制块task_struct 以下内容来自视频课件,存档在此. 为了管理进程,内核必须对每个进程进行清晰的描述,进程描述 ...
- numpy教程
[转]CS231n课程笔记翻译:Python Numpy教程 原文链接:https://zhuanlan.zhihu.com/p/20878530 译者注:本文智能单元首发,翻译自斯坦福CS231n课 ...
- 基于 Redis 做分布式锁
基于 REDIS 的 SETNX().EXPIRE() 方法做分布式锁 setnx() setnx 的含义就是 SET if Not Exists,其主要有两个参数 setnx(key, value) ...
- 插入排序的C、C++实现
一.插入排序 有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法--插入排序法,插入排序的基本操作就是将一个数据插入到 ...
- 这两天学到的简单Linux的命令
1. 定时执行命令查看命令的接口 watch -n kubectl get pods -n kube-ops 每十秒钟查看一下命令运行接口 2. 后台方式运行 jenkins 当前窗口关闭不影响执行结 ...