JS实现简单的Canvas画图实例


Posted in Javascript onJuly 04, 2013

定义变量:
[javascript]

var startX; 
var startY; 
var endX; 
var endY; 
var radius; 
var canvas = document.getElementById("myCanvas"); 
var context = canvas.getContext("2d"); 
var select = document.getElementsByTagName("select"); 
var startX;
var startY;
var endX;
var endY;
var radius;
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
var select = document.getElementsByTagName("select");

函数部分:
[javascript]
window.onload=function() { 
    canvas.onmousedown = function(e) { 
    e = e || event; 
    startX = e.clientX; 
    startY = e.clientY; 
    if(select[0].value == "arc") { 
        canvas.onmousemove = moveShowArc; 
    } else { 
        canvas.onmousemove = moveShowRect; 
    } 
    } 
    canvas.onmouseup = function() { 
    canvas.onmousemove = ""; 
    } 
} 
function moveShowRect(e) { 
    context.clearRect(0, 0, 500, 300); 
    endX = e.clientX - startX; 
    endY = e.clientY - startY; 
    context.beginPath(); 
    context.rect(startX, startY, endX, endY); 
    context.fillStyle = "#8ED6FF"; 
    context.fill(); 
    context.lineWidth = 3; 
    context.strokeStyle = "black"; 
    context.stroke(); 
} 
function moveShowArc(e) { 
    context.clearRect(0, 0, 500, 300); 
    endX = e.clientX - startX; 
    endY = e.clientY - startY; 
    radius = Math.sqrt(Math.pow(endX,2)+Math.pow(endY,2)); 
    context.beginPath(); 
    context.arc(startX, startY,radius,0,2 * Math.PI,false); 
    context.fillStyle = "#8ED6FF"; 
    context.fill(); 
    context.lineWidth = 3; 
    context.strokeStyle = "black"; 
    context.stroke(); 
} 
window.onload=function() {
    canvas.onmousedown = function(e) {
 e = e || event;
 startX = e.clientX;
 startY = e.clientY;
 if(select[0].value == "arc") {
     canvas.onmousemove = moveShowArc;
 } else {
     canvas.onmousemove = moveShowRect;
 }
    }
    canvas.onmouseup = function() {
 canvas.onmousemove = "";
    }
}
function moveShowRect(e) {
    context.clearRect(0, 0, 500, 300);
    endX = e.clientX - startX;
    endY = e.clientY - startY;
    context.beginPath();
    context.rect(startX, startY, endX, endY);
    context.fillStyle = "#8ED6FF";
    context.fill();
    context.lineWidth = 3;
    context.strokeStyle = "black";
    context.stroke();
}
function moveShowArc(e) {
    context.clearRect(0, 0, 500, 300);
    endX = e.clientX - startX;
    endY = e.clientY - startY;
    radius = Math.sqrt(Math.pow(endX,2)+Math.pow(endY,2));
    context.beginPath();
    context.arc(startX, startY,radius,0,2 * Math.PI,false);
    context.fillStyle = "#8ED6FF";
    context.fill();
    context.lineWidth = 3;
    context.strokeStyle = "black";
    context.stroke();
}
Javascript 相关文章推荐
Javascript isArray 数组类型检测函数
Oct 08 Javascript
javascript中节点的最近的相关节点访问方法
Mar 20 Javascript
cookie.js 加载顺序问题怎么才有效
Jul 31 Javascript
javascript函数中参数传递问题示例探讨
Jul 31 Javascript
浅谈Jquery核心函数
Jun 18 Javascript
JavaScript实现ASC转汉字及汉字转ASC的方法
Jan 23 Javascript
一款简单的jQuery图片标注效果附源码下载
Mar 22 Javascript
浅谈js中几种实用的跨域方法原理详解
Dec 02 Javascript
JS库中的Particles.js在vue上的运用案例分析
Sep 13 Javascript
微信打开网址添加在浏览器中打开提示的办法
May 20 Javascript
vue使用map代替Aarry数组循环遍历的方法
Apr 30 Javascript
axios封装与传参示例详解
Oct 18 Javascript
Jquery获取复选框被选中值的简单方法
Jul 04 #Javascript
jquery和javascript的区别(常用方法比较)
Jul 04 #Javascript
JS定时刷新页面及跳转页面的方法
Jul 04 #Javascript
浏览器打开层自动缓慢展开收缩实例代码
Jul 04 #Javascript
深入解析contentWindow, contentDocument
Jul 04 #Javascript
关于Javascript与iframe的那些事儿
Jul 04 #Javascript
如何使用Javascript正则表达式来格式化XML内容
Jul 04 #Javascript
You might like
php 生成静态页面的办法与实现代码详细版
2010/02/15 PHP
PHP类与对象中的private访问控制的疑问
2012/11/01 PHP
PHP生成sitemap.xml地图函数
2013/11/13 PHP
php可生成缩略图的文件上传类实例
2014/12/17 PHP
PHP的邮件群发系统phplist配置方法详细总结
2016/03/30 PHP
laravel5创建service provider和facade的方法详解
2016/07/26 PHP
PHP对XML内容进行修改和删除实例代码
2016/10/26 PHP
理解JavaScript中的事件
2006/09/23 Javascript
jQuery 研究心得 取得属性的值
2007/11/30 Javascript
jQuery ajax(复习)—Baidu ajax request分离版
2013/01/24 Javascript
javascript定时变换图片实例代码
2013/03/17 Javascript
javascript实现倒计时并弹窗提示特效
2015/06/05 Javascript
JavaScript实现仿新浪微博大厅和腾讯微博首页滚动特效源码
2015/09/15 Javascript
javascript将中国数字格式转换成欧式数字格式的简单实例
2016/08/02 Javascript
dropload.js插件下拉刷新和上拉加载使用详解
2017/10/20 Javascript
vue2.0组件之间传值、通信的多种方式(干货)
2018/02/10 Javascript
解决vue中修改了数据但视图无法更新的情况
2018/08/27 Javascript
从源码里了解vue中的nextTick的使用
2018/11/22 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
2019/04/17 Javascript
Node.js API详解之 Error模块用法实例分析
2020/05/14 Javascript
js实现简易ATM功能
2020/10/27 Javascript
js实现移动端轮播图滑动切换
2020/12/21 Javascript
[07:20]2014DOTA2西雅图国际邀请赛 选手讲解积分赛第二天
2014/07/11 DOTA
[05:41]2014DOTA2西雅图国际邀请赛 小组赛7月10日TOPPLAY
2014/07/10 DOTA
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
总结网络IO模型与select模型的Python实例讲解
2016/06/27 Python
打包python 加icon 去掉cmd黑窗口方法
2019/06/24 Python
python异常触发及自定义异常类解析
2019/08/06 Python
在Python中字符串、列表、元组、字典之间的相互转换
2019/11/15 Python
浅析python表达式4+0.5值的数据类型
2020/02/26 Python
python 列表推导和生成器表达式的使用
2021/02/01 Python
美国休闲服装品牌:Express
2016/09/24 全球购物
法定代表人资格证明书
2014/09/11 职场文书
办护照工作证明
2014/10/01 职场文书
CSS3 实现NES游戏机的示例代码
2021/04/21 HTML / CSS
使用pandas模块实现数据的标准化操作
2021/05/14 Python