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正则表达式来格式化XML内容
Jul 04 Javascript
javascript在myeclipse中报错的解决方法
Oct 29 Javascript
动态标签 悬停效果 延迟加载示例代码
Nov 21 Javascript
JavaScript实现班级随机点名小应用需求的具体分析
May 12 Javascript
简述AngularJS相关的一些编程思想
Jun 23 Javascript
JavaScript采用递归算法计算阶乘实例
Aug 04 Javascript
Bootstrap每天必学之按钮
Nov 26 Javascript
seajs模块之间依赖的加载以及模块的执行
Oct 21 Javascript
vue 请求后台数据的实例代码
Jun 22 Javascript
MUI实现上拉加载和下拉刷新效果
Jun 30 Javascript
vue与django集成打包的实现方法
Nov 11 Javascript
JavaScript经典案例之简易计算器
Aug 24 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+mysql实现用户注册登陆的方法
2015/01/03 PHP
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
isArray()函数(JavaScript中对象类型判断的几种方法)
2009/11/26 Javascript
js实现简单的星级选择器提交效果适用于评论等
2013/10/18 Javascript
js使用数组判断提交数据是否存在相同数据
2013/11/27 Javascript
js select下拉联动 更具级联性!
2020/04/17 Javascript
js实现数字递增特效【仿支付宝我的财富】
2017/05/05 Javascript
javascript基础进阶_深入剖析执行环境及作用域链
2017/09/05 Javascript
Vue实现购物车场景下的应用
2017/11/27 Javascript
使用classList来实现两个按钮样式的切换方法
2018/01/24 Javascript
JavaScript多种页面刷新方法小结
2019/04/04 Javascript
JS实现指定区域的全屏显示功能示例
2019/04/25 Javascript
Vue 自定义指令实现一键 Copy功能
2019/09/16 Javascript
解决layui数据表格Date日期格式的回显Object的问题
2019/09/19 Javascript
用Golang运行JavaScript的实现示例
2019/11/25 Javascript
[02:03]DOTA2亚洲邀请赛 HGT战队出场宣传片
2015/02/07 DOTA
在Python中操作字符串之rstrip()方法的使用
2015/05/19 Python
Python设计模式之MVC模式简单示例
2018/01/10 Python
Python Pillow Image Invert
2019/01/22 Python
python实现读取excel文件中所有sheet操作示例
2019/08/09 Python
利用python-docx模块写批量生日邀请函
2019/08/26 Python
Python多线程操作之互斥锁、递归锁、信号量、事件实例详解
2020/03/24 Python
配置python的编程环境之Anaconda + VSCode的教程
2020/03/29 Python
Python环境使用OpenCV检测人脸实现教程
2020/10/19 Python
详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案
2021/01/29 Python
墨尔本照明批发商店:Mica Lighting
2017/12/28 全球购物
即将毕业大学生自荐信
2014/01/24 职场文书
最新会计专业求职信范文
2014/01/28 职场文书
全民健身日活动方案
2014/01/29 职场文书
让世界充满爱演讲稿
2014/05/24 职场文书
学校创先争优活动总结
2014/08/28 职场文书
党员批评与自我批评思想汇报
2014/10/08 职场文书
展览会邀请函
2015/02/02 职场文书
干部考核工作总结
2015/08/12 职场文书
优秀学生主要事迹怎么写
2015/11/04 职场文书