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 相关文章推荐
动态样式类封装JS代码
Sep 02 Javascript
jquery 圆形旋转图片滚动切换效果
Jan 19 Javascript
javascript判断并获取注册表中可信任站点的方法
Jun 01 Javascript
Angularjs使用ng-repeat中$even和$odd属性的注意事项
Dec 31 Javascript
折叠菜单及选择器的运用
Feb 03 Javascript
轻松理解vue的双向数据绑定问题
Oct 30 Javascript
小程序调用微信支付的方法
Sep 26 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
Dec 17 Javascript
vue 需求 data中的数据之间的调用操作
Aug 05 Javascript
Javascript如何递归遍历本地文件夹
Aug 06 Javascript
微信小程序实现滚动Tab选项卡
Nov 16 Javascript
Element-ui 自带的两种远程搜索(模糊查询)用法讲解
Jan 29 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
提问的智慧(2)
2006/10/09 PHP
xss防御之php利用httponly防xss攻击
2014/03/21 PHP
php使用Cookie控制访问授权的方法
2015/01/21 PHP
javascript数组组合成字符串的脚本
2021/01/06 Javascript
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
2010/12/28 Javascript
JavaScript 原型继承
2011/12/26 Javascript
jQuery隔行变色与普通JS写法的对比
2013/04/21 Javascript
用jquery仿做发微博功能示例
2014/04/18 Javascript
浅谈javascript 函数内部属性
2015/01/21 Javascript
Angular中的Promise对象($q介绍)
2015/03/03 Javascript
javascript 继承学习心得总结
2016/03/17 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
2016/06/10 Javascript
jquery之别踩白块游戏的简单实现
2016/07/25 Javascript
js学习总结_基于数据类型检测的四种方式(必看)
2017/07/04 Javascript
js 毫秒转天时分秒的实例
2017/11/17 Javascript
详解webpack + react + react-router 如何实现懒加载
2017/11/20 Javascript
ReactNative实现Toast的示例
2017/12/31 Javascript
vue router 配置路由的方法
2018/07/26 Javascript
@angular前端项目代码优化之构建Api Tree的方法
2018/12/24 Javascript
vue动态禁用控件绑定disable的例子
2019/10/28 Javascript
[10:24]郎朗助力完美“圣”典,天籁交织奏响序曲
2016/12/18 DOTA
Python使用multiprocessing创建进程的方法
2015/06/04 Python
Python编程实现的图片识别功能示例
2017/08/03 Python
Python数据结构与算法之图结构(Graph)实例分析
2017/09/05 Python
python 中字典嵌套列表的方法
2018/07/03 Python
详解Python中的分组函数groupby和itertools)
2018/07/11 Python
python使用matplotlib画柱状图、散点图
2019/03/18 Python
pandas计数 value_counts()的使用
2019/06/24 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
2019/06/26 Python
CSS3新增布局之: flex详解
2020/06/18 HTML / CSS
代理商会议邀请函
2014/01/27 职场文书
新年寄语大全
2014/04/12 职场文书
专家推荐信模板
2014/05/09 职场文书
机械工程及自动化专业求职信
2014/09/03 职场文书
学校光盘行动倡议书
2015/04/28 职场文书
centos环境下nginx高可用集群的搭建指南
2022/07/23 Servers