C语言自学完备手册(33篇)

Android多分辨率适配框架

HTML5前端开发实战系列教程

MySQL数据库实操教程(35篇图文版)

推翻自己和过往——自定义View系列教程(10篇)

走出思维困境,踏上精进之路——Android开发进阶精华录

讲给Android程序员看的前端系列教程(40集免费视频教程+源码)


版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl

Hello canvas

在HTML5新增了canvas标签用于绘制图形,比如:文本、几何图形、路径、图片等等。该标签和其他HTML标签比起来没有多大的不同,除了指定常见的id、class、style等通用属性外,还可以通过height属性和width属性指定canvas的高和宽。嗯哼,我们先来看一个canvas的入门示例:

<!DOCTYPE html>
<!-- 本文作者:谷哥的小弟-->
<!-- 博客地址:https://blog.csdn.net/lfdfhl-->
<html lang="en"><head><meta charset="UTF-8"><title>canvas</title><style type="text/css">canvas {border: 2px;border-style: solid;border-color: red;}</style><script type="text/javascript">var helloCanvas = function() {var canvas = document.getElementById("cvs");var crc2d = canvas.getContext("2d");crc2d.fillStyle = "yellowgreen";crc2d.fillRect(10, 10, 100, 100);}</script></head><body><input type="button" value="Hello canvas" onclick="helloCanvas()"><br><br><canvas id="cvs" width="500" height="300"></canvas></body></html>

运行后效果如下图所示:

这段代码的逻辑很简单:获取canvas标签,然后在canvas中画了一个矩形。但是,请注意:绘制图形的这个操作是谁完成的呢?是画布本身么?不是,而是通过getContext(“2d”)获取到的CanvasRenderingContext2D对象,即代码:

var crc2d = canvas.getContext(“2d”);

CanvasRenderingContext2D 对象提供了一组用来在画布上绘制的图形函数。接下来,我们来一起学习CanvasRenderingContext2D的常见用法和操作。


绘制圆形

请看如下示例:

<!DOCTYPE html>
<!-- 本文作者:谷哥的小弟-->
<!-- 博客地址:https://blog.csdn.net/lfdfhl-->
<html lang="en"><head><meta charset="UTF-8"><title>canvas</title><style type="text/css">canvas {border: 2px;border-style: solid;border-color: red;}</style><script type="text/javascript">var draw = function() {var canvas = document.getElementById("cvs");var crc2d = canvas.getContext("2d");crc2d.beginPath();crc2d.arc(70, 70, 50, 0, 2 * Math.PI);crc2d.strokeStyle = "blue";crc2d.stroke();}</script></head><body><input type="button" value="canvas" onclick="draw()"><br><br><canvas id="cvs" width="500" height="300"></canvas></body></html>

运行后效果如下图所示:

在该示例中利用CanvasRenderingContext2D.arc( )绘制了圆形


绘制文本

请看如下示例:

<!DOCTYPE html>
<!-- 本文作者:谷哥的小弟-->
<!-- 博客地址:https://blog.csdn.net/lfdfhl-->
<html lang="en"><head><meta charset="UTF-8"><title>canvas</title><style type="text/css">canvas {border: 2px;border-style: solid;border-color: red;}</style><script type="text/javascript">var draw = function() {var canvas = document.getElementById("cvs");var crc2d = canvas.getContext("2d");crc2d.font = "40px 楷体";crc2d.fillText("本文作者:谷哥的小弟", 50, 50);}</script></head><body><input type="button" value="canvas" onclick="draw()"><br><br><canvas id="cvs" width="500" height="300"></canvas></body></html>

运行后效果如下图所示:

除了此处使用的fillRect( )之外CanvasRenderingContext2D还提供了strokeText( )方法用于绘制文本。


绘制图片

请看如下示例:

<!DOCTYPE html>
<!-- 本文作者:谷哥的小弟-->
<!-- 博客地址:https://blog.csdn.net/lfdfhl-->
<html lang="en"><head><meta charset="UTF-8"><title>canvas</title><style type="text/css">canvas {border: 2px;border-style: solid;border-color: red;}</style><script type="text/javascript">var draw = function() {var canvas = document.getElementById("cvs");var crc2d = canvas.getContext("2d");var myGirlImage = new Image();myGirlImage.src = "img/cutegirl.jpg";myGirlImage.onload = function() {crc2d.drawImage(myGirlImage, 0, 0);}}</script></head><body><input type="button" value="canvas" onclick="draw()"><br><br><canvas id="cvs" width="500" height="300"></canvas></body></html>

运行后效果如下图所示:

在本示例中使用了.drawImage(image, dx, dy);按照图片原本的大小进行绘制。除此以外,还可以采用方法drawImage(image, dx, dy, dWidth, dHeight);对图片进行缩放绘制;亦可以采用drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);从原图中扣取部分图像进行绘制


绘制世界

本文列举了几种常见的图形绘制,但这仅仅只是CanvasRenderingContext2D的九牛一毛罢了。不论是Android还是HTML5,关于图形的绘制都是一个庞大的体系;毕竟这两个哥们在某种角度来说都是靠UI吃饭的。我们可以在Android里的onDraw( )中画得缤纷绚丽,我们可以用CanvasRenderingContext2D画得灿烂夺目。多想有一天,遇见了马良,我可以借他的神笔,画出一个美好世界。

讲给后台程序员看的前端系列教程(40)——canvas相关推荐

  1. 讲给后台程序员看的前端系列教程(19)——CSS的层叠性与继承性以及优先级

    C语言自学完备手册(33篇) Android多分辨率适配框架 HTML5前端开发实战系列教程 MySQL数据库实操教程(35篇图文版) 推翻自己和过往--自定义View系列教程(10篇) 走出思维困境 ...

  2. 讲给后台程序员看的前端系列教程(11)——HTML综合练习

    C语言自学完备手册(33篇) Android多分辨率适配框架 HTML5前端开发实战系列教程 MySQL数据库实操教程(35篇图文版) 推翻自己和过往--自定义View系列教程(10篇) 走出思维困境 ...

  3. 讲给后台程序员看的前端系列教程(06)——HTML5标签(5)

    C语言自学完备手册(33篇) Android多分辨率适配框架 HTML5前端开发实战系列教程 MySQL数据库实操教程(35篇图文版) 推翻自己和过往--自定义View系列教程(10篇) 走出思维困境 ...

  4. 讲给后台程序员看的前端系列教程(38)——事件处理

    C语言自学完备手册(33篇) Android多分辨率适配框架 HTML5前端开发实战系列教程 MySQL数据库实操教程(35篇图文版) 推翻自己和过往--自定义View系列教程(10篇) 走出思维困境 ...

  5. 讲给后台程序员看的前端系列教程(52)——Bootstrap轮播图

    C语言自学完备手册(33篇) Android多分辨率适配框架 JavaWeb核心技术系列教程 HTML5前端开发实战系列教程 MySQL数据库实操教程(35篇图文版) 推翻自己和过往--自定义View ...

  6. 讲给后台程序员看的前端系列教程(02)——HTML5标签(1)

    C语言自学完备手册(33篇) Android多分辨率适配框架 HTML5前端开发实战系列教程 MySQL数据库实操教程(35篇图文版) 推翻自己和过往--自定义View系列教程(10篇) 走出思维困境 ...

  7. 写给程序员看的“幻灯片”制作教程

    大家好,我叫谢伟,是一名程序员. 如果你比较关注国外开发者大会,你经常可以看到,一些程序员分享一些在线可以查看的"幻灯片",当然这里的幻灯片和微软 Office 旗下的 Power ...

  8. 黑马程序员pink老师前端入门教程,零基础必看的JavaScript基础语法视频教程(一)

    一.计算机编程基础 编程语言 编程语言与标记语言的区别 编程语言 有很强的逻辑和行为能力,有if else等具有逻辑性和行为能力的指令,主动 标记语言(html)不用于向计算机发出指令,常用于格式化和 ...

  9. 黑马程序员pink老师前端入门教程,零基础必看的JavaScript基础语法视频教程(jQuery1)

    jQuery概述 JavaScript库 jQuery概述 jQuery优点 jQuery的基本使用 入口函数 jQuery的顶级对象$ DOM对象和jQuery对象 DOM对象和jQuery对象相互 ...

最新文章

  1. 机械臂底层通信协议说明
  2. 见鬼,结果还就这样了
  3. pde lec 6 part 2
  4. CRMEB小程序安装说明
  5. LiveVideoStack线上分享第五季(十二):移动端多种通话场景统一技术方案实践...
  6. python神经网络教程16_Python深度学习之神经网络视频
  7. MySQL流浪记(四)—— DDL和DML区别与介绍
  8. session mysql java_PHP自定义session处理方法,保存到MySQL数据库中
  9. template标签_C++核心准则T.65:使用标签分发提供函数的不同实现
  10. Spring Cloud Config 规范 1
  11. 高德地图获取经纬度坐标
  12. java 快速删除文件夹_java File删除文件夹完整版
  13. mysql删除图书信息,图书管理系统(一):出版社列表增加、删除和编辑
  14. bzoj 3717 [PA2014]Pakowanie
  15. 车来了实时公交接口API免费注册使用
  16. WPS内嵌图片怎样使用Java获取图片?
  17. mysql输出当前是第几周使用week和weekofyear的区别
  18. 分享一款超级好用的Windows清理软件
  19. Arch下 OpenJDK shows intermittent performance and UI issues. We recommend using the Oracle JRE/JDK.
  20. 炫酷登录界面(html+css)

热门文章

  1. NGUI实现技能冷却
  2. 微信H5棋牌类及app类推广链接在微信推广中遇到的问题讨论
  3. unidbg实现淘宝请求参数算法,实现脱离模拟器/手机请求淘宝、闲鱼
  4. 商超客流轨迹跟踪方案
  5. Autodock分子对接详细步骤
  6. 淘淘商城——生成订单
  7. 用python求解bessel函数_python中bessel函数的积分:细分问题
  8. 【经典算法】N皇后问题
  9. springboot 4大默认容器、指定运行容器
  10. Arduino UNO产生100Hz和500Hz的方波在示波器捕捉下的波形图