﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-悄然无声的Blog-随笔分类-HTML5</title><link>http://www.blogjava.net/myqiao/category/46360.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 19 Oct 2010 07:40:49 GMT</lastBuildDate><pubDate>Tue, 19 Oct 2010 07:40:49 GMT</pubDate><ttl>60</ttl><item><title>HTML5边玩边学（10）：俄罗斯方块就是这么简单 之 控制界面篇（源码）</title><link>http://www.blogjava.net/myqiao/archive/2010/10/18/335477.html</link><dc:creator>左洸</dc:creator><author>左洸</author><pubDate>Mon, 18 Oct 2010 10:31:00 GMT</pubDate><guid>http://www.blogjava.net/myqiao/archive/2010/10/18/335477.html</guid><wfw:comment>http://www.blogjava.net/myqiao/comments/335477.html</wfw:comment><comments>http://www.blogjava.net/myqiao/archive/2010/10/18/335477.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/myqiao/comments/commentRss/335477.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/myqiao/services/trackbacks/335477.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这一次在上一篇程序的基础上增加了以下交互控制功能：1、键盘控制；2、开始、暂停；3、消除时候空行的停顿效果；4、随着消除行数的增多，速度加快；5、音效等等。可以看出，在数据模型抽象好的基础上，完成控制和图形接口是非常方便的。&nbsp;&nbsp;<a href='http://www.blogjava.net/myqiao/archive/2010/10/18/335477.html'>阅读全文</a><img src ="http://www.blogjava.net/myqiao/aggbug/335477.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/myqiao/" target="_blank">左洸</a> 2010-10-18 18:31 <a href="http://www.blogjava.net/myqiao/archive/2010/10/18/335477.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTML5边玩边学（9）：俄罗斯方块就是这么简单 之 数据模型篇</title><link>http://www.blogjava.net/myqiao/archive/2010/10/17/335390.html</link><dc:creator>左洸</dc:creator><author>左洸</author><pubDate>Sun, 17 Oct 2010 15:21:00 GMT</pubDate><guid>http://www.blogjava.net/myqiao/archive/2010/10/17/335390.html</guid><wfw:comment>http://www.blogjava.net/myqiao/comments/335390.html</wfw:comment><comments>http://www.blogjava.net/myqiao/archive/2010/10/17/335390.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/myqiao/comments/commentRss/335390.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/myqiao/services/trackbacks/335390.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 要写一个俄罗斯方块小游戏，我们先来一块考虑一下下面几个问题：.......  如果你对上面几个问题思考，每一个答案都和界面、控件、平台有关的话，就是说假如你是用 .Net 的，你的每一个答案都是围绕着如何利用控件、如何使用窗体、在控件的哪个事件里面改变哪个属性等等，那么说明你被微软的 RAD 开发环境毒害的不浅，我建议你立刻扔掉 Visual Studio，改用其他轻量级的编程语言和开发平台，这样你可以更多的关注问题的本身，而不是控件。&nbsp;&nbsp;<a href='http://www.blogjava.net/myqiao/archive/2010/10/17/335390.html'>阅读全文</a><img src ="http://www.blogjava.net/myqiao/aggbug/335390.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/myqiao/" target="_blank">左洸</a> 2010-10-17 23:21 <a href="http://www.blogjava.net/myqiao/archive/2010/10/17/335390.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTML5边玩边学（7）：动画初步 之 飞舞的精灵</title><link>http://www.blogjava.net/myqiao/archive/2010/10/08/333934.html</link><dc:creator>左洸</dc:creator><author>左洸</author><pubDate>Thu, 07 Oct 2010 16:14:00 GMT</pubDate><guid>http://www.blogjava.net/myqiao/archive/2010/10/08/333934.html</guid><wfw:comment>http://www.blogjava.net/myqiao/comments/333934.html</wfw:comment><comments>http://www.blogjava.net/myqiao/archive/2010/10/08/333934.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/myqiao/comments/commentRss/333934.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/myqiao/services/trackbacks/333934.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一、为什么选择 HTML5 HTML5 边玩边学算上这篇已经是第七篇了，在这篇开始之前，我想先说明一下为什么叫“HTML5” 边玩边学，因为有人对 HTML5 提出质疑，毕竟他是一个新生事物。我承认我用 HTML5 来吸引眼球了，如果看过边玩边学系列的每一篇，你会发现前六篇文&nbsp;&nbsp;<a href='http://www.blogjava.net/myqiao/archive/2010/10/08/333934.html'>阅读全文</a><img src ="http://www.blogjava.net/myqiao/aggbug/333934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/myqiao/" target="_blank">左洸</a> 2010-10-08 00:14 <a href="http://www.blogjava.net/myqiao/archive/2010/10/08/333934.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTML5边玩边学（6）：汽车人，变形......</title><link>http://www.blogjava.net/myqiao/archive/2010/10/05/333762.html</link><dc:creator>左洸</dc:creator><author>左洸</author><pubDate>Tue, 05 Oct 2010 04:34:00 GMT</pubDate><guid>http://www.blogjava.net/myqiao/archive/2010/10/05/333762.html</guid><wfw:comment>http://www.blogjava.net/myqiao/comments/333762.html</wfw:comment><comments>http://www.blogjava.net/myqiao/archive/2010/10/05/333762.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/myqiao/comments/commentRss/333762.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/myqiao/services/trackbacks/333762.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这一篇主要学习 HTML5 图像的变形操作以及变形相关的图形学基本概念，并给出了一个可以对美女图像进行基准点移动、基准点缩放和基准点旋转的小例子。后面学习了图像的组合和裁剪，也给出了一个小例子。&nbsp;&nbsp;<a href='http://www.blogjava.net/myqiao/archive/2010/10/05/333762.html'>阅读全文</a><img src ="http://www.blogjava.net/myqiao/aggbug/333762.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/myqiao/" target="_blank">左洸</a> 2010-10-05 12:34 <a href="http://www.blogjava.net/myqiao/archive/2010/10/05/333762.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTML5边玩边学（5）：图像、图案和字体 </title><link>http://www.blogjava.net/myqiao/archive/2010/10/04/333734.html</link><dc:creator>左洸</dc:creator><author>左洸</author><pubDate>Mon, 04 Oct 2010 08:45:00 GMT</pubDate><guid>http://www.blogjava.net/myqiao/archive/2010/10/04/333734.html</guid><wfw:comment>http://www.blogjava.net/myqiao/comments/333734.html</wfw:comment><comments>http://www.blogjava.net/myqiao/archive/2010/10/04/333734.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/myqiao/comments/commentRss/333734.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/myqiao/services/trackbacks/333734.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 通过对一幅美女图片的处理，向您展示 HTML5 的强大图像处理功能...&nbsp;&nbsp;<a href='http://www.blogjava.net/myqiao/archive/2010/10/04/333734.html'>阅读全文</a><img src ="http://www.blogjava.net/myqiao/aggbug/333734.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/myqiao/" target="_blank">左洸</a> 2010-10-04 16:45 <a href="http://www.blogjava.net/myqiao/archive/2010/10/04/333734.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTML5边玩边学（4）：变幻的色彩</title><link>http://www.blogjava.net/myqiao/archive/2010/10/03/333700.html</link><dc:creator>左洸</dc:creator><author>左洸</author><pubDate>Sun, 03 Oct 2010 12:11:00 GMT</pubDate><guid>http://www.blogjava.net/myqiao/archive/2010/10/03/333700.html</guid><wfw:comment>http://www.blogjava.net/myqiao/comments/333700.html</wfw:comment><comments>http://www.blogjava.net/myqiao/archive/2010/10/03/333700.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/myqiao/comments/commentRss/333700.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/myqiao/services/trackbacks/333700.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 渐变色 Gradients：上下文对象有两个方法可以创建一个叫做 canvasGradient 的对象，并用它设置 fillStyle 或 strokeStyle 属性，绘制出来的图形就有渐变效果了&nbsp;&nbsp;<a href='http://www.blogjava.net/myqiao/archive/2010/10/03/333700.html'>阅读全文</a><img src ="http://www.blogjava.net/myqiao/aggbug/333700.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/myqiao/" target="_blank">左洸</a> 2010-10-03 20:11 <a href="http://www.blogjava.net/myqiao/archive/2010/10/03/333700.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTML5边玩边学（3）：像素和颜色</title><link>http://www.blogjava.net/myqiao/archive/2010/09/18/332404.html</link><dc:creator>左洸</dc:creator><author>左洸</author><pubDate>Sat, 18 Sep 2010 15:00:00 GMT</pubDate><guid>http://www.blogjava.net/myqiao/archive/2010/09/18/332404.html</guid><wfw:comment>http://www.blogjava.net/myqiao/comments/332404.html</wfw:comment><comments>http://www.blogjava.net/myqiao/archive/2010/09/18/332404.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/myqiao/comments/commentRss/332404.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/myqiao/services/trackbacks/332404.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 我们在电脑屏幕上可以看到色彩斑斓的图像，其实这些图像都是由一个个像素点组成的。那么像素是什么？颜色又是什么呢？（如果您提出这两个问题，您一定是个热爱思考的人）一个像素其实对应着内存中的一组连续的二进制位&nbsp;&nbsp;<a href='http://www.blogjava.net/myqiao/archive/2010/09/18/332404.html'>阅读全文</a><img src ="http://www.blogjava.net/myqiao/aggbug/332404.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/myqiao/" target="_blank">左洸</a> 2010-09-18 23:00 <a href="http://www.blogjava.net/myqiao/archive/2010/09/18/332404.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTML5边玩边学（2）：基础绘图</title><link>http://www.blogjava.net/myqiao/archive/2010/09/18/332371.html</link><dc:creator>左洸</dc:creator><author>左洸</author><pubDate>Sat, 18 Sep 2010 03:32:00 GMT</pubDate><guid>http://www.blogjava.net/myqiao/archive/2010/09/18/332371.html</guid><wfw:comment>http://www.blogjava.net/myqiao/comments/332371.html</wfw:comment><comments>http://www.blogjava.net/myqiao/archive/2010/09/18/332371.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/myqiao/comments/commentRss/332371.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/myqiao/services/trackbacks/332371.html</trackback:ping><description><![CDATA[<table width="750" height="280">
    <tbody>
        <tr>
            <td valign="bottom">
            <p>在前一篇博客中，我们测试了 canvas 标签的用法，并得到了 canvas 标签的渲染上下文对象， 但是并没有用它绘制任何图形。在这一篇中，我们先了解一下HTML5绘图的一些基础概念，然后再来画几个图形玩玩。</p>
            <p><span style="font-size: 18pt"><strong>一、坐标系</strong></span></p>
            <p>其实只要玩过一点点图形编程的人都知道，电脑上的坐标系和数学上的坐标系稍微有点不同，坐标的原点在绘制区域（这里是Canvas）的左上角，X轴正向朝右，Y轴正向朝下，如下图</p>
            <p><img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/myqiao/html5/Canvas_default_grid.png" width="220" height="220" /></p>
            </td>
            <td width="30"></td>
            <td width="340">
<script type="text/javascript"><!--
                    google_ad_client = "pub-1798174031137512";
                    /* 336x280 图文 */
                    google_ad_slot = "0230816054";
                    google_ad_width = 336;
                    google_ad_height = 280;
                    //-->
                </script><script type="text/javascript"
                                 src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
                </script></td>
</tr>
</tbody>
</table>
<p><span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium Simsun; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><span style="text-align: left; line-height: 20px; font-family: Arial; font-size: 12px" class="Apple-style-span"><strong>声明：</strong>为本文为原创文章，作者保留所有权利！欢迎转载，转载请注明作者<font color="#ff0000"><strong>左洸</strong></font>和出处<font color="#ff0000"><a style="color: rgb(67,113,166)" href="http://www.cnblogs.com/myqiao/" target="_blank"><font color="#ff0000"><strong>博客园</strong></font></a></font></span></span></p>
<p>&nbsp;</p>
<p><span style="font-size: 18pt"><strong>二、Stroke 和 Fill </strong></span></p>
<p>HTML5中将图形分为两大类：</p>
<p>第一类称作 Stroke，我的理解就是轮廓、勾勒或者线条，总之，图形是由线条组成的；</p>
<p>第二类称作 Fill，就是填充区域</p>
<p>上下文对象中有两个绘制矩形的方法，可以让我们很好的理解这两大类图形的区别：</p>
<p>一个是 strokeRect，还有一个是 fillRect </p>
<p>下面的代码分别用这两个方法来绘制矩形，你可以分别点击两个按钮来看看有什么不同，从而理解 stroke 和 fill 的区别</p>
<div class="cnblogs_code" onclick="cnblogs_code_show('a0589ba1-6652-4430-a19d-17b47e5d19bd')"><img style="display: none" id="code_img_closed_a0589ba1-6652-4430-a19d-17b47e5d19bd" class="code_img_closed" alt="" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" /><img id="code_img_opened_a0589ba1-6652-4430-a19d-17b47e5d19bd" class="code_img_opened" onclick="cnblogs_code_hide('a0589ba1-6652-4430-a19d-17b47e5d19bd',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"  alt="" /><span class="cnblogs_code_collapse">设置画布</span>
<div id="cnblogs_code_open_a0589ba1-6652-4430-a19d-17b47e5d19bd">
<div><!--<br/ />
<br/ />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />
http://www.CodeHighlighter.com/<br/ />
<br/ />
--><span style="color: #0000ff">&lt;</span><span style="color: #800000">canvas&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="test1"</span><span style="color: #ff0000">&nbsp;width</span><span style="color: #0000ff">="200"</span><span style="color: #ff0000">&nbsp;height</span><span style="color: #0000ff">="200"</span><span style="color: #ff0000">&nbsp;style</span><span style="color: #0000ff">="&nbsp;background-color:&nbsp;grey"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">你的浏览器不支持&nbsp;</span><span style="color: #ff0000">&amp;lt;</span><span style="color: #000000">canvas</span><span style="color: #ff0000">&amp;gt;</span><span style="color: #000000">标签，请使用&nbsp;Chrome&nbsp;浏览器&nbsp;或者&nbsp;FireFox&nbsp;浏览器</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">canvas</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="button"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="strokeRect"</span><span style="color: #ff0000">&nbsp;&nbsp;onclick</span><span style="color: #0000ff">="strokeRect();"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="button"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="fillRect"</span><span style="color: #ff0000">&nbsp;&nbsp;onclick</span><span style="color: #0000ff">="fillRect();"</span><span style="color: #0000ff">/&gt;</span></div>
</div>
</div>
<p>&nbsp;</p>
<div class="cnblogs_code" onclick="cnblogs_code_show('ae9bbf00-b81a-4f8d-bca0-cebdbc86779b')"><img style="display: none" id="code_img_closed_ae9bbf00-b81a-4f8d-bca0-cebdbc86779b" class="code_img_closed" alt="" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" /><img id="code_img_opened_ae9bbf00-b81a-4f8d-bca0-cebdbc86779b" class="code_img_opened" onclick="cnblogs_code_hide('ae9bbf00-b81a-4f8d-bca0-cebdbc86779b',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"  alt="" /><span class="cnblogs_code_collapse">strokeRect 和 fillRect</span>
<div id="cnblogs_code_open_ae9bbf00-b81a-4f8d-bca0-cebdbc86779b">
<div><!--<br/ />
<br/ />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />
http://www.CodeHighlighter.com/<br/ />
<br/ />
--><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;strokeRect(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;canvas&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #800000">'</span><span style="color: #800000">test1</span><span style="color: #800000">'</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;ctx</span><span style="color: #000000">=</span><span style="color: #000000">canvas.getContext(</span><span style="color: #800000">"</span><span style="color: #800000">2d</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;ctx.clearRect(</span><span style="color: #800080">0</span><span style="color: #000000">,</span><span style="color: #800080">0</span><span style="color: #000000">,</span><span style="color: #800080">200</span><span style="color: #000000">,</span><span style="color: #800080">200</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;ctx.strokeStyle</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">blue</span><span style="color: #800000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;ctx.strokeRect(</span><span style="color: #800080">10</span><span style="color: #000000">,</span><span style="color: #800080">10</span><span style="color: #000000">,</span><span style="color: #800080">180</span><span style="color: #000000">,</span><span style="color: #800080">180</span><span style="color: #000000">);<br />
}<br />
<br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;fillRect(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;canvas&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #800000">'</span><span style="color: #800000">test1</span><span style="color: #800000">'</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;ctx</span><span style="color: #000000">=</span><span style="color: #000000">canvas.getContext(</span><span style="color: #800000">"</span><span style="color: #800000">2d</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;ctx.clearRect(</span><span style="color: #800080">0</span><span style="color: #000000">,</span><span style="color: #800080">0</span><span style="color: #000000">,</span><span style="color: #800080">200</span><span style="color: #000000">,</span><span style="color: #800080">200</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;ctx.fillStyle</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">blue</span><span style="color: #800000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;ctx.fillRect(</span><span style="color: #800080">10</span><span style="color: #000000">,</span><span style="color: #800080">10</span><span style="color: #000000">,</span><span style="color: #800080">180</span><span style="color: #000000">,</span><span style="color: #800080">180</span><span style="color: #000000">);<br />
}</span></div>
</div>
</div>
<p>&nbsp;</p>
<p><canvas style="background-color: grey" id="test1" height="200" width="200">你的浏览器不支持 &lt;canvas&gt;标签，请使用 Chrome 浏览器 或者 FireFox 浏览器</canvas> </p>
<p><input onclick="strokeRect();" value="strokeRect" type="button" /> <input onclick="fillRect();" value="fillRect" type="button" /> </p>
<script type="text/javascript">
    function strokeRect(){
        var canvas = document.getElementById('test1');
        var ctx=canvas.getContext("2d");
        ctx.clearRect(0,0,200,200);
        ctx.strokeStyle="blue";
        ctx.strokeRect(10,10,180,180);
    }
    function fillRect(){
        var canvas = document.getElementById('test1');
        var ctx=canvas.getContext("2d");
        ctx.clearRect(0,0,200,200);
        ctx.fillStyle="blue";
        ctx.fillRect(10,10,180,180);
    }
</script><p><strong></strong></p>
<p><strong></strong></p>
<p><span style="font-size: 18pt"><strong></strong></span>&nbsp;</p>
<p><span style="font-size: 18pt"><strong>三、颜色</strong></span></p>
<p>上下文对象有两个属性可以用来设置颜色：strokeStyle 和 fillStyle </p>
<p>strokeStyle 的值决定了你当前要绘制的线条的颜色 </p>
<p>fillStyle 的值决定了你当前要填充的区域的颜色 </p>
<p>颜色值应该是符合<span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium Simsun; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><span style="line-height: 23px; font-family: Verdana, Tahoma, sans-serif; color: rgb(37,34,29); font-size: 14px" class="Apple-style-span"><a style="background-image: url(https://developer.mozilla.org/skins/mozilla/Fox3/img/icons/link_external.png); background-color: transparent; padding-right: 16px; background-position: 99% 40%; color: rgb(4,121,167); text-decoration: none; background-origin: initial; background-clip: initial" class="external" title="http://www.w3.org/TR/2003/CR-css3-color-20030514/#numerical" href="http://www.w3.org/TR/2003/CR-css3-color-20030514/#numerical" rel="external nofollow" target="_blank">CSS3 颜色值标准</a></span></span>的有效字符串。下面的例子都表示同一种颜色。</p>
<div class="cnblogs_code">
<div><!--<br/ />
<br/ />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />
http://www.CodeHighlighter.com/<br/ />
<br/ />
--><span style="color: #008000">//</span><span style="color: #008000">这些&nbsp;fillStyle&nbsp;的值均为&nbsp;'橙色'，ctx&nbsp;是上下文对象&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">ctx</span><span style="color: #000000">.</span><span style="color: #000000">fillStyle&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">orange</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;<br />
ctx</span><span style="color: #000000">.</span><span style="color: #000000">fillStyle&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">#FFA500</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
ctx</span><span style="color: #000000">.</span><span style="color: #000000">fillStyle&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">rgb(255,165,0)</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;<br />
ctx</span><span style="color: #000000">.</span><span style="color: #000000">fillStyle&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">rgba(255,165,0,1)</span><span style="color: #000000">"</span><span style="color: #000000">;</span></div>
</div>
<p>关于颜色，以后会有更多的说明。</p>
<p>&nbsp;</p>
<p><strong style="font-size: 18pt">四、基本绘图</strong></p>
<p>除了上面给出的两个绘制矩形的方法外，上下文对象还有几个方法可以用来绘制一些基本图形，如下：</p>
<p><strong>moveTo</strong>(x,y)：moveTo方法并不能画出任何东西，它只是将画笔的当前点移动到(x,y)处</p>
<p><strong>lineTo</strong>(x,y)：从当前点到（x,y）点绘制一条直线。注意：绘制完成后，当前点就变成了(x,y)，除非你用 moveTo 方法去改变他</p>
<p><strong>arc</strong>(x, y, radius, startAngle, endAngle, anticlockwise) ：绘制一条弧线</p>
<p><strong>quadraticCurveTo</strong>(cp1x, cp1y, x, y) <br />
<strong>bezierCurveTo</strong>(cp1x, cp1y, cp2x, cp2y, x, y) ：这两个方法都是绘制贝叶斯曲线，具体用法看参考手册</p>
<p><strong>rect</strong>(x, y, width, height) ：绘制一个矩形。注意： 当它被调用时，moveTo 方法会自动被调用，参数为(0,0)，于是起始坐标又恢复成初始原点了。 </p>
<p>有了直线、弧线、曲线、方形和圆形这几种基本图形，我们就可以组合出更复杂的图形了</p>
<p>&nbsp;</p>
<p><strong style="font-size: 18pt">五、理解绘制路径 Drawing Path</strong></p>
<p>上一篇文章中说过，我们绘制的图形是先绘制到一个抽象的上下文对象中（其实就是内存中），然后再将上下文对象输出到显示设备上，这个输出到显示设备的过程不需要我们操心。但是有时候我们并不想立刻输出每一次绘制动作，也许我想让一组绘制动作完成以后，再集中一块输出， 比如一个围棋棋盘有19&#215;19条直线组成，正常情况下需要向想显示设备输出19&#215;19次，但是如果我们先暂停向显示设备输出，等在上下文中（内存中）全部绘制完成19&#215;19条直线时，再向显示设备输出，只需要输出一次就可以了。</p>
<p>这种情况在HTML5中叫做绘制路径，它由几个上下文对象的方法组成：</p>
<p><strong>beginPath</strong>() ：开始路径，意思就是在你调用这个方法后，你绘制的图形就不会再向屏幕输出了，而只是画到了上下文对象中（内存中）</p>
<p><strong>stroke</strong>() ：将你调用 beginPath 方法以后绘制的所有线条，一次性输出到显示设备上</p>
<p><strong>closePath</strong>() ：如果你调用 beginPath 方法以后，在上下文对象中进行了一系列的绘制，但是得到的图形是不闭合的，这个方法将会帮你补上最后一条直线，将你的图形闭合起来。</p>
<p><strong style="color: red">注意</strong><span style="color: red">：</span><u>closePath并不向屏幕输出图形，而只是在上下文对象中补上一条线，这个步骤不是必需的</u>。</p>
<p><strong>fill</strong>() ：</p>
<p>如果你的绘制路径组成的图形是封闭的，这个方法将用 fillStyle 设置的颜色填充图形，然后立即向屏幕输出；</p>
<p>如果绘制路径不是封闭的，这个方法会先将图形闭合起来，然后再填充输出。</p>
<p><strong style="color: red">注意：</strong><u>所有的 fill 图形，如 fillRect 等，都是立刻向屏幕输出的，他们没有绘制路径这个概念</u></p>
<p>&nbsp;</p>
<p>下面的代码将绘制一个简单的填充三角形。</p>
<p><span style="color: red">注意：</span>绘制三角形的时候，<u>默认的背景色为白色，默认的前景色为黑色</u>。</p>
<div class="cnblogs_code" onclick="cnblogs_code_show('c032aa3b-06e3-45d1-86f0-aad0a5d7c6fb')"><img style="display: none" id="code_img_closed_c032aa3b-06e3-45d1-86f0-aad0a5d7c6fb" class="code_img_closed" alt="" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" /><img id="code_img_opened_c032aa3b-06e3-45d1-86f0-aad0a5d7c6fb" class="code_img_opened" onclick="cnblogs_code_hide('c032aa3b-06e3-45d1-86f0-aad0a5d7c6fb',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"  alt="" /><span class="cnblogs_code_collapse">设置画布</span>
<div id="cnblogs_code_open_c032aa3b-06e3-45d1-86f0-aad0a5d7c6fb">
<div><!--<br/ />
<br/ />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />
http://www.CodeHighlighter.com/<br/ />
<br/ />
--><span style="color: #0000ff">&lt;</span><span style="color: #800000">canvas&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="test2"</span><span style="color: #ff0000">&nbsp;width</span><span style="color: #0000ff">="200"</span><span style="color: #ff0000">&nbsp;height</span><span style="color: #0000ff">="200"</span><span style="color: #ff0000">&nbsp;style</span><span style="color: #0000ff">="border:1px&nbsp;solid&nbsp;#c3c3c3;"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">你的浏览器不支持&nbsp;</span><span style="color: #ff0000">&amp;lt;</span><span style="color: #000000">canvas</span><span style="color: #ff0000">&amp;gt;</span><span style="color: #000000">标签，请使用&nbsp;Chrome&nbsp;浏览器&nbsp;或者&nbsp;FireFox&nbsp;浏览器</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">canvas</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="button"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="画三角"</span><span style="color: #ff0000">&nbsp;&nbsp;onclick</span><span style="color: #0000ff">="drawTri();"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="button"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="清除"</span><span style="color: #ff0000">&nbsp;&nbsp;onclick</span><span style="color: #0000ff">="clearTri();"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span></div>
</div>
</div>
<p>&nbsp;</p>
<div class="cnblogs_code" onclick="cnblogs_code_show('66b97d2e-4fd8-459f-8ba2-81ef66c73c62')"><img style="display: none" id="code_img_closed_66b97d2e-4fd8-459f-8ba2-81ef66c73c62" class="code_img_closed" alt="" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" /><img id="code_img_opened_66b97d2e-4fd8-459f-8ba2-81ef66c73c62" class="code_img_opened" onclick="cnblogs_code_hide('66b97d2e-4fd8-459f-8ba2-81ef66c73c62',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"  alt="" /><span class="cnblogs_code_collapse">绘制三角形</span>
<div id="cnblogs_code_open_66b97d2e-4fd8-459f-8ba2-81ef66c73c62">
<div><!--<br/ />
<br/ />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />
http://www.CodeHighlighter.com/<br/ />
<br/ />
--><span style="color: #000000">&lt;</span><span style="color: #000000">script&nbsp;</span><span style="color: #ff00ff">type</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">text/javascript</span><span style="color: #800000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;drawTri(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;canvas&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #800000">'</span><span style="color: #800000">test2</span><span style="color: #800000">'</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;ctx</span><span style="color: #000000">=</span><span style="color: #000000">canvas.getContext(</span><span style="color: #800000">"</span><span style="color: #800000">2d</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctx.beginPath();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctx.moveTo(</span><span style="color: #800080">75</span><span style="color: #000000">,</span><span style="color: #800080">50</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctx.lineTo(</span><span style="color: #800080">100</span><span style="color: #000000">,</span><span style="color: #800080">75</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctx.lineTo(</span><span style="color: #800080">100</span><span style="color: #000000">,</span><span style="color: #800080">25</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctx.fill();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;clearTri(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;canvas&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #800000">'</span><span style="color: #800000">test2</span><span style="color: #800000">'</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;ctx</span><span style="color: #000000">=</span><span style="color: #000000">canvas.getContext(</span><span style="color: #800000">"</span><span style="color: #800000">2d</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctx.clearRect(</span><span style="color: #800080">0</span><span style="color: #000000">,</span><span style="color: #800080">0</span><span style="color: #000000">,</span><span style="color: #800080">200</span><span style="color: #000000">,</span><span style="color: #800080">200</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #000000">&lt;/</span><span style="color: #000000">script</span><span style="color: #000000">&gt;</span></div>
</div>
</div>
<p><canvas style="border-bottom: #c3c3c3 1px solid; border-left: #c3c3c3 1px solid; border-top: #c3c3c3 1px solid; border-right: #c3c3c3 1px solid" id="test2" height="200" width="200">你的浏览器不支持 &lt;canvas&gt;标签，请使用 Chrome 浏览器 或者 FireFox 浏览器</canvas></p>
<p><input onclick="drawTri();" value="画三角" type="button" /> <input onclick="clearTri();" value="清除" type="button" /> </p>
<script type="text/javascript">
        function drawTri(){
            var canvas = document.getElementById('test2');
            var ctx=canvas.getContext("2d");
            ctx.beginPath();
            ctx.moveTo(75,50);
            ctx.lineTo(100,75);
            ctx.lineTo(100,25);
            ctx.fill();
        }
        function clearTri(){
            var canvas = document.getElementById('test2');
            var ctx=canvas.getContext("2d");
            ctx.clearRect(0,0,200,200);
        }
    </script><p>&nbsp;</p>
<p><strong style="font-size: 18pt">六、半个单位的坐标</strong></p>
<p>这里还要回过头来说说坐标，下面的代码是在画布上绘制网格，点击&#8220;画网格&#8221;按钮可以看见效果</p>
<div class="cnblogs_code" onclick="cnblogs_code_show('efa3761f-09a2-4739-8a95-9caf065f0a45')"><img style="display: none" id="code_img_closed_efa3761f-09a2-4739-8a95-9caf065f0a45" class="code_img_closed" alt="" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" /><img id="code_img_opened_efa3761f-09a2-4739-8a95-9caf065f0a45" class="code_img_opened" onclick="cnblogs_code_hide('efa3761f-09a2-4739-8a95-9caf065f0a45',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"  alt="" /><span class="cnblogs_code_collapse">设置画布</span>
<div id="cnblogs_code_open_efa3761f-09a2-4739-8a95-9caf065f0a45">
<div><!--<br/ />
<br/ />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />
http://www.CodeHighlighter.com/<br/ />
<br/ />
--><span style="color: #0000ff">&lt;</span><span style="color: #800000">canvas&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="test3"</span><span style="color: #ff0000">&nbsp;width</span><span style="color: #0000ff">="500"</span><span style="color: #ff0000">&nbsp;height</span><span style="color: #0000ff">="375"</span><span style="color: #ff0000">&nbsp;style</span><span style="color: #0000ff">="border:1px&nbsp;solid&nbsp;#c3c3c3;"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">你的浏览器不支持&nbsp;</span><span style="color: #ff0000">&amp;lt;</span><span style="color: #000000">canvas</span><span style="color: #ff0000">&amp;gt;</span><span style="color: #000000">标签，请使用&nbsp;Chrome&nbsp;浏览器&nbsp;或者&nbsp;FireFox&nbsp;浏览器</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">canvas</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="button"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="画网格"</span><span style="color: #ff0000">&nbsp;&nbsp;onclick</span><span style="color: #0000ff">="drawMap();"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="button"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="清除"</span><span style="color: #ff0000">&nbsp;&nbsp;onclick</span><span style="color: #0000ff">="clearMap();"</span><span style="color: #0000ff">/&gt;</span></div>
</div>
</div>
<p>&nbsp;</p>
<div class="cnblogs_code" onclick="cnblogs_code_show('1b4ff6bf-bb87-4898-bc9a-f509b119e2e3')"><img style="display: none" id="code_img_closed_1b4ff6bf-bb87-4898-bc9a-f509b119e2e3" class="code_img_closed" alt="" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" /><img id="code_img_opened_1b4ff6bf-bb87-4898-bc9a-f509b119e2e3" class="code_img_opened" onclick="cnblogs_code_hide('1b4ff6bf-bb87-4898-bc9a-f509b119e2e3',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"  alt="" /><span class="cnblogs_code_collapse">绘制网格</span>
<div id="cnblogs_code_open_1b4ff6bf-bb87-4898-bc9a-f509b119e2e3">
<div><!--<br/ />
<br/ />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />
http://www.CodeHighlighter.com/<br/ />
<br/ />
--><span style="color: #000000">&lt;</span><span style="color: #000000">script&nbsp;</span><span style="color: #ff00ff">type</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">text/javascript</span><span style="color: #800000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;drawMap(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;canvas&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #800000">'</span><span style="color: #800000">test3</span><span style="color: #800000">'</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;ctx</span><span style="color: #000000">=</span><span style="color: #000000">canvas.getContext(</span><span style="color: #800000">"</span><span style="color: #800000">2d</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctx.beginPath();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(var&nbsp;x&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">0.5</span><span style="color: #000000">;&nbsp;x&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">500</span><span style="color: #000000">;&nbsp;x&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">10</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctx.moveTo(x,&nbsp;</span><span style="color: #800080">0</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctx.lineTo(x,&nbsp;</span><span style="color: #800080">375</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(var&nbsp;y&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">0.5</span><span style="color: #000000">;&nbsp;y&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">375</span><span style="color: #000000">;&nbsp;y&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">10</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctx.moveTo(</span><span style="color: #800080">0</span><span style="color: #000000">,&nbsp;y);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctx.lineTo(</span><span style="color: #800080">500</span><span style="color: #000000">,&nbsp;y);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctx.strokeStyle&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">#eee</span><span style="color: #800000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctx.stroke();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;clearMap(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;canvas&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #800000">'</span><span style="color: #800000">test3</span><span style="color: #800000">'</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;ctx</span><span style="color: #000000">=</span><span style="color: #000000">canvas.getContext(</span><span style="color: #800000">"</span><span style="color: #800000">2d</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctx.clearRect(</span><span style="color: #800080">0</span><span style="color: #000000">,</span><span style="color: #800080">0</span><span style="color: #000000">,</span><span style="color: #800080">500</span><span style="color: #000000">,</span><span style="color: #800080">375</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #000000">&lt;/</span><span style="color: #000000">script</span><span style="color: #000000">&gt;</span></div>
</div>
</div>
<p>&nbsp;</p>
<p><canvas style="border-bottom: #c3c3c3 1px solid; border-left: #c3c3c3 1px solid; border-top: #c3c3c3 1px solid; border-right: #c3c3c3 1px solid" id="test3" height="375" width="500">你的浏览器不支持 &lt;canvas&gt;标签，请使用 Chrome 浏览器 或者 FireFox 浏览器</canvas></p>
<p><input onclick="drawMap();" value="画网格" type="button" /> <input onclick="clearMap();" value="清除" type="button" /> </p>
<script type="text/javascript">
        function drawMap(){
            var canvas = document.getElementById('test3');
            var ctx=canvas.getContext("2d");
            ctx.beginPath();
            for (var x = 0.5; x < 500; x += 10) {
                ctx.moveTo(x, 0);
                ctx.lineTo(x, 375);
            }
            for (var y = 0.5; y < 375; y += 10) {
                ctx.moveTo(0, y);
                ctx.lineTo(500, y);
            }
            ctx.strokeStyle = "#eee";
            ctx.stroke();
        }
        function clearMap(){
            var canvas = document.getElementById('test3');
            var ctx=canvas.getContext("2d");
            ctx.clearRect(0,0,500,375);
        }
 </script><p>&nbsp;</p>
<p>这段代码中，有一处奇怪的地方，就是坐标循环是从0.5开始的，这是为什么呢？</p>
<p>如下图，假如我想绘制一条从(1,0)到(1,3)的线，由于线的默认宽度是一个像素，所以在我想象中应该绘制成<strong style="color: #339966"><u>深绿色</u></strong>的部分，即在坐标 1 两边各占半个像素的宽度。</p>
<p>然而，浏览器的最小单位是一个像素，所以他会向两边扩展，实际绘制出来的<strong style="color: #99cc00"><u>浅绿色</u></strong>的部分，即占用了两个像素的宽度。这样，我们绘制的线条在坐标上就不精确了</p>
<p><img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/myqiao/html5/canvas-half-pixels-1.jpg" width="406" height="314" /></p>
<p>如下图，如果我们给出的起始坐标是(1.5,0)和(1.5,3)，那么线条的宽度才是正确的一个像素。</p>
<p><img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/myqiao/html5/canvas-half-pixels-2.jpg" width="404" height="323" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong style="font-size: 18pt">七、清空画布</strong></p>
<p>上面给出的两段代码中，我们都用到了清空画布，用到的方法如下：</p>
<p>clearRect(x,y,width,height)：</p>
<p>它接受四个参数， x 和 y 指定矩形左上角(相对于原点)的位置，width 和 height 是矩形的宽和高。调用该方法会将给出的矩形区域中所有绘制图形都清空，露出画布的背景 </p>
<p>&nbsp;</p>
<p><span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium Simsun; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><span style="text-align: left; line-height: 20px; font-family: Arial; font-size: 12px" class="Apple-style-span"><strong>声明：</strong>为本文为原创文章，作者保留所有权利！欢迎转载，转载请注明作者<font color="#ff0000"><strong>左洸</strong></font>和出处<font color="#ff0000"><a style="color: rgb(67,113,166)" href="http://www.cnblogs.com/myqiao/" target="_blank"><font color="#ff0000"><strong>博客园</strong></font></a></font></span></span></p>
<p>//========================================== <br />
</p>
<script type="text/javascript"><!--
        google_ad_client = "pub-1798174031137512";
        /* 728x90 图文 */
        google_ad_slot = "5397571580";
        google_ad_width = 728;
        google_ad_height = 90;
        //-->
    </script><script type="text/javascript"
            src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
    </script><p>&nbsp;</p><img src ="http://www.blogjava.net/myqiao/aggbug/332371.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/myqiao/" target="_blank">左洸</a> 2010-09-18 11:32 <a href="http://www.blogjava.net/myqiao/archive/2010/09/18/332371.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTML5边玩边学（1）：画布</title><link>http://www.blogjava.net/myqiao/archive/2010/09/17/HTML5.html</link><dc:creator>左洸</dc:creator><author>左洸</author><pubDate>Fri, 17 Sep 2010 15:45:00 GMT</pubDate><guid>http://www.blogjava.net/myqiao/archive/2010/09/17/HTML5.html</guid><wfw:comment>http://www.blogjava.net/myqiao/comments/332343.html</wfw:comment><comments>http://www.blogjava.net/myqiao/archive/2010/09/17/HTML5.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/myqiao/comments/commentRss/332343.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/myqiao/services/trackbacks/332343.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Html5 引入了一个新的 canvas 标签，这个标签所代表的区域就好象一块画布，你的所有图形绘制最后都要在这块画布上呈现。有了这个标签，浏览器的图形表现力被极大的提升，Flash 和 SilverLight 有没有感到威胁呢?&nbsp;&nbsp;<a href='http://www.blogjava.net/myqiao/archive/2010/09/17/HTML5.html'>阅读全文</a><img src ="http://www.blogjava.net/myqiao/aggbug/332343.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/myqiao/" target="_blank">左洸</a> 2010-09-17 23:45 <a href="http://www.blogjava.net/myqiao/archive/2010/09/17/HTML5.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>