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 字符串连接性能优化
Dec 20 Javascript
jquery实现更改表格行顺序示例
Apr 30 Javascript
Js实现网页键盘控制翻页的方法
Oct 30 Javascript
js实现鼠标触发图片抖动效果的方法
Feb 27 Javascript
JavaScript中操作Mysql数据库实例
Apr 02 Javascript
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
Apr 22 Javascript
JS实现横向拉伸动感伸缩菜单效果代码
Sep 04 Javascript
JavaScript中removeChild 方法开发示例代码
Aug 15 Javascript
Vue.js 2.0窥探之Virtual DOM到底是什么?
Feb 10 Javascript
react-router JS 控制路由跳转实例
Jun 15 Javascript
JavaScript读写二进制数据的方法详解
Sep 09 Javascript
jquery轮播图插件使用方法详解
Jul 31 jQuery
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类
2006/11/25 PHP
JavaScript null和undefined区别分析
2009/10/14 Javascript
jQuery帮助之筛选查找 children([expr])
2011/01/31 Javascript
基于Jquery+Ajax+Json的高效分页实现代码
2011/10/29 Javascript
JS与jQ读取xml文件的方法
2015/12/08 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
2016/01/08 Javascript
jQuery获取file控件中图片的宽高与大小
2016/08/04 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
2016/11/22 Javascript
js, jQuery实现全选、反选功能
2017/03/08 Javascript
js断点调试心得分享(必看篇)
2017/12/08 Javascript
ng-alain表单使用方式详解
2018/07/10 Javascript
对layui中表单元素的使用详解
2018/08/15 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
2018/08/25 Javascript
前端Vue项目详解--初始化及导航栏
2019/06/24 Javascript
layui 弹出层回调获取弹出层数据的例子
2019/09/02 Javascript
layui switch 开关监听 弹出确定状态转换的例子
2019/09/21 Javascript
jQuery实现鼠标移入显示蒙版效果
2020/01/11 jQuery
python实现数通设备端口监控示例
2014/04/02 Python
Python3实现从文件中读取指定行的方法
2015/05/22 Python
python统计文本文件内单词数量的方法
2015/05/30 Python
Python Property属性的2种用法
2015/06/21 Python
详解Python中open()函数指定文件打开方式的用法
2016/06/04 Python
Python获取某一天是星期几的方法示例
2017/01/17 Python
Python入门之三角函数全解【收藏】
2017/11/08 Python
Python快速查找list中相同部分的方法
2018/06/27 Python
Numpy将二维数组添加到空数组的实现
2019/12/05 Python
HTML5: Web 标准最巨大的飞跃
2008/10/17 HTML / CSS
有影响力的人、名人和艺术家的官方商品:Represent
2019/11/26 全球购物
工作中的自我评价如何写好
2013/10/28 职场文书
《谁的本领大》教后反思
2014/04/25 职场文书
党支部书记岗位职责
2015/02/15 职场文书
情侣之间的道歉短信
2015/05/12 职场文书
色戒观后感
2015/06/12 职场文书
java解析XML详解
2021/07/09 Java/Android
Win11 S Mode版本泄露 正式上线后叫做Windows 11 SE
2021/11/21 数码科技