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 相关文章推荐
[原创]图片分页查看
Aug 28 Javascript
javascript中的undefined 与 null 的区别  补充篇
Mar 17 Javascript
jQuery制作的别致导航有阴影背景高亮模式窗口
Apr 15 Javascript
jQuery实现鼠标滑过Div层背景变颜色的方法
Feb 17 Javascript
JavaScript中创建字典对象(dictionary)实例
Mar 31 Javascript
被遗忘的javascript的slice() 方法
Apr 20 Javascript
深入理解jquery中的each用法
Dec 14 Javascript
JQuery获取鼠标进入和离开容器的方向
Dec 29 Javascript
MUI 上拉刷新/下拉加载功能实例代码
Apr 13 Javascript
详解React Native顶|底部导航使用小技巧
Sep 14 Javascript
基于vue-cli创建的项目的目录结构及说明介绍
Nov 23 Javascript
利用node实现一个批量重命名文件的函数
Dec 21 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多线程实现方法及用法实例详解
2015/10/26 PHP
yii2超好用的日期组件和时间组件
2016/05/05 PHP
深入分析PHP设计模式
2020/06/15 PHP
用js计算页面执行时间的函数
2006/12/07 Javascript
显示js对象所有属性和方法的函数
2009/10/16 Javascript
基于JQuery实现异步刷新的代码(转载)
2011/03/29 Javascript
精通Javascript系列之数值计算
2011/06/07 Javascript
两种常用的javascript数组去重方法思路及代码
2013/03/26 Javascript
完美解决AJAX跨域问题
2013/11/01 Javascript
js中判断用户输入的值是否为空的简单实例
2013/12/23 Javascript
JS实现可缩放、拖动、关闭和最小化的浮动窗口完整实例
2015/03/04 Javascript
javascript实现密码强度显示
2015/03/18 Javascript
JavaScript实现点击按钮字体放大、缩小
2016/02/29 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
解决jQuery ajax动态新增节点无法触发点击事件的问题
2017/05/24 jQuery
微信小程序图片宽100%显示并且不变形
2017/06/21 Javascript
详解用node.js实现简单的反向代理
2017/06/26 Javascript
vue项目优化之通过keep-alive数据缓存的方法
2017/12/11 Javascript
vue页面切换到滚动页面显示顶部的实例
2018/03/13 Javascript
angular2模块和共享模块详解
2018/04/08 Javascript
微信小程序实现红包功能(后端PHP实现逻辑)
2018/07/11 Javascript
angular 服务的单例模式(依赖注入模式下)详解
2018/10/22 Javascript
JS实现数组深拷贝的方法分析
2019/03/06 Javascript
浅谈layui数据表格判断问题(加入表单元素),设置单元格样式
2019/10/26 Javascript
对python 生成拼接xml报文的示例详解
2018/12/28 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
2019/08/31 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
2019/10/10 Python
Python中免验证跳转到内容页的实例代码
2020/10/23 Python
HTML5 Canvas画线技巧——实现绘制一个像素宽的细线
2013/08/02 HTML / CSS
澳大利亚冒险体验:Adrenaline(跳伞、V8赛车、热气球等)
2017/09/18 全球购物
欧洲有机婴儿食品最大的市场:Organic Baby Food(供美国和加拿大)
2018/03/28 全球购物
物业管理公司实习生自我鉴定
2013/09/19 职场文书
会务接待方案
2014/02/27 职场文书
党员2014两会学习心得体会
2014/03/17 职场文书
导师工作推荐信
2015/03/27 职场文书
SQL Server Agent 服务无法启动
2022/04/20 SQL Server