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保存当前路径(cookies记录)
Dec 14 Javascript
js中的前绑定和后绑定详解
Aug 01 Javascript
js简单实现删除记录时的提示效果
Dec 05 Javascript
javascript中的事件代理初探
Mar 08 Javascript
深入理解javascript构造函数和原型对象
Sep 23 Javascript
JavaScript入门系列之知识点总结
Mar 24 Javascript
bootstrap输入框组代码分享
Jun 07 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
Dec 18 Javascript
angularjs点击图片放大实现上传图片预览
Feb 24 Javascript
vue如何实现动态加载脚本
Feb 05 Javascript
vite2.0+vue3移动端项目实战详解
Mar 03 Vue.js
js 数组 fill() 填充方法
Nov 02 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 cout<<的一点看法
2010/01/24 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
2016/04/07 PHP
Yii的Srbac插件用法详解
2016/07/14 PHP
经典的带阴影的可拖动的浮动层
2006/06/26 Javascript
悄悄用脚本检查你访问过哪些网站的代码
2010/12/04 Javascript
Jsonp post 跨域方案
2015/07/06 Javascript
浅谈javascript中遇到的字符串对象处理
2016/11/18 Javascript
在网页中插入百度地图的步骤详解
2016/12/02 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
2017/01/20 Javascript
微信小程序 点击控件后选中其它反选实例详解
2017/02/21 Javascript
vue指令以及dom操作详解
2017/03/04 Javascript
浅谈vue实现数据监听的函数 Object.defineProperty
2017/06/08 Javascript
简单实现js进度条加载效果
2020/03/25 Javascript
jquery实现用户登陆界面(示例讲解)
2017/09/06 jQuery
Vue路由切换时的左滑和右滑效果示例
2018/05/29 Javascript
JavaScript解决浮点数计算不准确问题的方法分析
2018/07/09 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
2018/11/28 Javascript
JS函数动态传递参数的方法分析【基于arguments对象】
2019/06/05 Javascript
JavaScript Canvas编写炫彩的网页时钟
2019/10/16 Javascript
为Python的Tornado框架配置使用Jinja2模板引擎的方法
2016/06/30 Python
Python实现PS滤镜功能之波浪特效示例
2018/01/26 Python
简单实现python数独游戏
2018/03/30 Python
numpy判断数值类型、过滤出数值型数据的方法
2018/06/09 Python
不管你的Python报什么错,用这个模块就能正常运行
2018/09/14 Python
python3 实现验证码图片切割的方法
2018/12/07 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
2019/10/30 Python
Django返回HTML文件的实现方法
2020/09/17 Python
加拿大领先的牛仔零售商:Bluenotes
2018/01/22 全球购物
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
有针对性的求职自荐信
2013/11/14 职场文书
党支部综合考察材料
2014/05/19 职场文书
乡镇干部个人对照检查材料(群众路线)
2014/09/26 职场文书
企业领导班子四风对照检查材料
2014/09/27 职场文书
毕业生自荐信范文
2015/03/05 职场文书
捐款仪式主持词
2015/07/04 职场文书
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
2021/06/26 MySQL