H5整理(二)

canvas基础

<canvas id="c1" width="400" height="400">
    你的浏览器不支持!
<!--默认有宽高 : width:300 height:150 。
canvas的正确设置宽高 :属性 width="400" height="400" -->
</canvas>

<script>
    var mycanvas = document.getElementById("c1");
    mycanvas.width = 1000;
</script>

canvas宽高通过标签属性实现

<style>
            body {
                background: black;
            }
            #c1 {
                background: white;
            }
        </style>
        <canvas id="c1" width="400" height="400">   
        </canvas>
        <script>
           
            var oC = document.getElementById("c1");
           
            //获取绘制2d 图像的环境。
            var oCanvas = oC.getContext("2d");
           
           
            oCanvas.fillRect(100,100,100,100);
           
            //左边距 上边距  ,矩形宽 和高。
            oCanvas.strokeRect(100,250,100,100);
        </script>

fillRect()表示填充图像,

strokeRect()表示描边图像

<style>
    body {
        background: black;
    }
    #c1 {
        background: white;
    }
</style>
<canvas id="c1" width="400" height="400">
</canvas>
<script>
    var oC = document.getElementById(‘c1‘);
    var oGC = oC.getContext(‘2d‘);

oGC.fillStyle = ‘yellow‘;

oGC.lineJoin = "bevel"; //绘制线的图形,而不是填充的图形
           
//            miter(默认) 、round(圆角)、bevel(斜角)

oGC.fillRect(100,100,200,100);
   
    oGC.strokeStyle = ‘blue‘;
    oGC.lineWidth = 10;
    oGC.strokeRect(100,250,100,100);
</script>

fillStylestrokeStyle设置图像的颜色

lineWidth设置描边的边框宽度

lineJoin  :   边界连接点样式
miter(默认) 、round(圆角)、bevel(斜角)

<style>
            body {
                background: black;
            }
            #c1 {
                background: white;
            }
        </style>
        <canvas id="c1" width="400" height="400">
        </canvas>
        <script>
            var oC = document.getElementById(‘c1‘);
            var oGC = oC.getContext(‘2d‘);

oGC.strokeStyle = ‘red‘;
            oGC.fillStyle = "blue";
            oGC.lineWidth = 1;
           
            oGC.beginPath(); //开始绘制路径
            oGC.moveTo(100,100);  //设置一个初始点
            oGC.lineTo(200,200); //下一个目标点
            oGC.lineTo(200,300); //
            oGC.closePath();
            oGC.fill();  //填充颜色

oGC.beginPath();
            oGC.moveTo(300,300);
            oGC.lineTo(300,350);
            oGC.lineTo(350,200);
            oGC.closePath();  //帮助闭合路径
            oGC.stroke(); //划线连接
           
            //清除画布某个区域
//            oGC.clearRect(100,100,100,200);

beginPath :  开始绘制路径
closePath  :  结束绘制路径(自动闭合相关路径) closePath()要在stroke 前调用
moveTo  :  确定绘制的起始点
lineTo  :  绘制路径到新的目标点

stroke :  画线,默认黑色   
fill  :  填充,默认黑色
clearRect  :   清除一个画布的矩形区域

<style>
    body {
        background: black;
    }
    #c1 {
        background: white;
    }
</style>
<canvas id="c1" width="400" height="400">
</canvas>
<script>
    var oC = document.getElementById(‘c1‘);
    var oGC = oC.getContext(‘2d‘);

/*1. 清除画布矩形区域(x , y, w,h)*/
    //oGC.fillRect(50,50,100,100);
    //oGC.clearRect(100,100,50,50);

/*2. 清除整个画布*/
    //oGC.clearRect(0,0,oC.width,oC.height);
   
    /*3. save() and restore()*/
    oGC.strokeStyle = ‘black‘;
    oGC.lineWidth = ‘1‘;
   
oGC.save();     //保存上面的配置(属性值);
    oGC.strokeStyle = ‘red‘;
    oGC.lineWidth = "20";
    oGC.beginPath();
    oGC.moveTo(100, 100);
    oGC.lineTo(200, 200);
    oGC.lineTo(300, 200);
    oGC.closePath();
    oGC.stroke();
oGC.restore(); //恢复上次保存的属性值。

//如果不写save 和restore  就会填充红色的效果
oGC.save();     //保存上面的配置(属性值);
    oGC.strokeStyle = ‘blue‘;
    oGC.lineWidth = "10";
    oGC.beginPath();
    oGC.moveTo(100, 200);
    oGC.lineTo(200, 300);
    oGC.lineTo(300, 300);
    oGC.closePath();
    oGC.stroke();
oGC.restore();

oGC.beginPath();
    oGC.moveTo(0, 0);
    oGC.lineTo(100, 180);
    oGC.lineTo(180, 180);
    oGC.closePath();
    oGC.stroke();
</script>

save  : 保存路径
restore  :  恢复路径
例子   :    鼠标画线   ,    方块移动

实例:

1.鼠标划线

<style>
    body {
        background: black;
    }
    #c1 {
        background: white;
    }
</style>
<canvas id="c1" width="400" height="400">
</canvas>
<script>
    var oC = document.getElementById(‘c1‘);
    var oGC = oC.getContext(‘2d‘);
    oGC.strokeStyle = "red";
   
    //线帽
    oGC.lineCap = "round";
    oGC.lineWidth = "10";
   
    oC.onmousedown = function(ev){
        //确定划线的起始位置
        oGC.beginPath();
    var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
    var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;

//兼容滚动条
        oGC.moveTo(ev.clientX-oC.offsetLeft+scrollLeft,ev.clientY-oC.offsetTop+scrollTop);
        oC.onmousemove = function(ev){
            oGC.lineTo(ev.clientX-oC.offsetLeft+scrollLeft,ev.clientY-oC.offsetTop+scrollTop);
            oGC.stroke();
        }               
        oC.onmouseup = function(){
            oC.onmousemove = null;
            oC.onmouseup = null;
        }
    }

2.方块水平移动

<style>
            body {
                background: black;
            }
           
            #c1 {
                background: white;
            }
        </style>
        <canvas id="c1" width="400" height="400" tabindex="0">
        </canvas>
        <script>
            var oC = document.getElementById(‘c1‘);
            var oGC = oC.getContext(‘2d‘);
            oGC.fillStyle= "red";
            oGC.fillRect(0, 0, 100, 100);
           
            var iNow = 0;
//            setInterval(function(){
//                oGC.clearRect(0,0,400,400);
//                iNow++;
//                oGC.fillRect(0, iNow, 100, 100);
//            },30);

//canvas ”动画效果“, 边擦边画实现
           
            //canvas本身 不支持键盘事件。
           
            //支持键盘有两种方法:
           
//            (1)给window 绑定键盘

//            (2)给canvas 加上一个tabindex 属性

var isRightNow = 0;
            oC.onkeydown = function(ev){
                console.log(ev);
                if(ev.keyCode==39){
                    oGC.clearRect(0,0,400,400);
                    isRightNow++;
                    oGC.fillRect(isRightNow,0,100,100);
                }else if(ev.keyCode==37){
                    oGC.clearRect(0,0,400,400);
                    isRightNow--;
                   
                    oGC.fillRect(isRightNow,0,100,100);
                }
            }
        </script>

arc(x, y, 半径, 起始弧度, 结束弧度, 旋转方向)
x ,  y  :   起始位置
弧度与角度的关系:弧度 = 角度*Math.PI/180
旋转方向:顺时针(默认:false)、逆时针(true)

<style>
    body {
        background: black;
    }
    #c1 {
        background: white;
    }
</style>
<canvas id="c1" width="400" height="400"></canvas>
<script>
    //弧度 = 角度*Math.PI/180
    //默认 : 顺时针旋转 , 最后一个参数控制旋转方向 :false顺时针,true就是逆时针(顺时针开始画还是逆时针开始画)

var oC = document.getElementById(‘c1‘);
    var oGC = oC.getContext(‘2d‘);
    oGC.beginPath();

oGC.arc(200, 200, 100, 0 * Math.PI / 180, 360 * Math.PI / 180,false);
    oGC.closePath();
    oGC.fill();
    oGC.stroke();
</script>

时间: 2024-08-27 17:45:52

H5整理(二)的相关文章

AJAX学习整理二之简单实例

做了几个简单的实例,加载txt文本内容.加载xml文件内容,把xml文本内容转换成html表格显示.废话不多说,直接贴代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/html"> <head>     <title>通过ajax获取文本内容</title>     <meta charset="utf-8">     <scr

Windows Azure 实验培训学习与交流(官方版整理二)

Windows Azure 技术更新比较快,也许有很多人下面的都已看过,为以后我们好回头可以查看,也为还没有看到这些官方材料的小伙伴们带来一些帮助,如下是整理的官方版实验材料都以链接形式呈现,方便大家学习和交流. 微软培训材料下载 http://windowsazure-trainingkit.github.io/index.htm 注:Github作为培训材料的存储库微软所有配套的材料都会及时更新到Github上 目前微软团队已将大部分培训材料翻译成中文 https://github.com/

java面试题整理二(转灰灰+灰灰)

java 开发面试题小整理(二) 51.Anonymous Inner Class(匿名内部类)是否可以继承其它类?是否可以实现接口? 答:可以继承其他类或实现其他接口,在Swing编程和Android开发中常用此方式来实现事件监听和回调. 52.内部类可以引用它的包含类(外部类)的成员吗?有没有什么限制? 答:一个内部类对象可以访问创建它的外部类对象的成员,包括私有成员. 53.Java 中的final关键字有哪些用法? 答:(1)修饰类:表示该类不能被继承: (2)修饰方法:表示方法不能被重

Linux常见命令整理(二)

权限设置 chmod  改变文件或目录的权限 格式 chmod 参数  文件名 r-读 w-写 x-执行 u-user 所有者 g-group 所属组 o-others 其他人 a-all 所有人 + 添加某个权限 - 取消某个权限 =  赋予给定权限并取消原来所有权限 除此之外,也可以使用数字来表示权限 r = 4 w = 2 x = 1 例如:chmod 777 a 代表修改文件a的权限是-rwxrwxrwx 其他的权限类似 chown 改变某个文件或目录的所有者 格式 chown 用户 文

C#与C++数据类型比较及结构体转换(搜集整理二)

原文网址:http://www.blogjava.net/heting/archive/2010/03/20/315998.html C++ C# ===================================== WORD ushort DWORD uint UCHAR int/byte 大部分情况都可以使用int代替,而如果需要严格对齐的话则应该用bytebyte UCHAR* string/IntPtr unsigned char* [MarshalAs(UnmanagedType

javascript 基础学习整理 二 之 html对象总结,参考W3C

Anchor 对象 更改一个链接的文本.URL 以及 target 使用 focus() 和 blur() 向超链接添加快捷键 Document 对象 使用 document.write() 向输出流写文本 使用 document.write() 向输出流写 HTML 返回当前文档的标题 返回当前文档的 URL 返回当前文档的 referrer 返回下载当前文档的服务器域名 使用 getElementById() 使用 getElementsByName() 打开一个新的文档,添加一些文本,然后

算法整理(二)---快速排序的两种实现方式:双边扫描和单边扫描

首先简单谈下快速排序的特点,时间复杂度O(nLog n),最差时间复杂度O(n^2),平均时间O(nLog n).因为用到了函数栈,空间复杂度为O(lg n),最差为O(n).是一种不稳定的排序方法.基本思想是分治法,这位大大的http://blog.csdn.net/morewindows/article/details/6684558 讲的非常清楚了,分治法+挖坑法,我就不多说了.就是以某个数为参照,使得左边的都小于他,右边的数都大于他.然后对他的左右两个区间采取同样的方法进行递归. 就其整

算法整理(二)---高速排序的两种实现方式:双边扫描和单边扫描

首先简单谈下高速排序的特点,时间复杂度O(nLog n),最差时间复杂度O(n^2),平均时间O(nLog n).由于用到了函数栈,空间复杂度为O(lg n),最差为O(n).是一种不稳定的排序方法.基本思想是分治法,这位大大的http://blog.csdn.net/morewindows/article/details/6684558 讲的很清楚了,分治法+挖坑法,我就不多说了.就是以某个数为參照,使得左边的都小于他,右边的数都大于他.然后对他的左右两个区间採取相同的方法进行递归. 就其总体

微信开发H5十二人牛牛出租源码下载搭建

微信开发H5十二人牛牛出租源码下载搭建h5.fanshubbs.com联系Q1687054422不同于传统的手游商店下载模式,HTML5 手机网页游戏是可以直接运行在微信内置的浏览器里. 先上图,感知一下具体样子: 而我想分享的是我们在具体开发实现过程中,基于微信的Html5 WebApp需要去克服的一些坑:这个小游戏的基本规则是:限定用户每天刮书次数是2次 (自由刮一次和分享后再刮一次),每天都可刮奖为此,我们希望实现的思路首先是限定在只能使用微信中玩,实现代码如下:if (!HttpCont