html5 canvas画图之图形随拖动而复制(有操作指示)
学习html5 canvas,写了一个小练习来加深理解,可以实现图形随拖动而复制。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>demoCanvas2</title>
<style>
*{margin:0px;padding:0px;} #out{
position:absolute;
width:800px;
height:500px;
position:absolute;
top:0px;
left:0px;
border:1px solid #ff0000;
} .demo1{
position:absolute;
width:100px;
height:100px;
top:10px;
left:10px;
border:1px solid #ff0000;
} #util{
position:absolute;
width:350px;
height:300px;
top:50px;
right:50px;
}
</style>
</head> <body>
<div id="out">
<canvas id="demo1" class="demo1"></canvas>
</div> <div id="util">
<p>
<h2>操作简介</h2>
移动图形:单击图形不放并移动。<br/>
复制图形:松开鼠标。<br/>
结束操作:双击鼠标。 </p>
鼠标横坐标:<input type="text" id="lan1"/><br>
鼠标纵坐标:<input type="text" id="lan2"/>
</div> <script>
//绘制基本图像
var demo1=document.getElementById("demo1");
var pen1=demo1.getContext("2d");
pen1.moveTo(2,2);
pen1.lineTo(20,100);
pen1.lineTo(200,40);
pen1.lineTo(2,2);
pen1.stroke(); //鼠标单击demo1对象时
demo1.onmousedown=function(e){
// 记录demo1的宽和高
var myWidth=e.clientX-demo1.offsetLeft;
var myHeight=e.clientY-demo1.offsetTop; //记录此时坐标位置
var left0=this.offsetLeft;
var top0=this.offsetTop; //鼠标移动时
demo1.onmousemove=function(e){
//demo1跟随鼠标坐标
demo1.style.left=e.clientX-myWidth+"px";
demo1.style.top=e.clientY-myHeight+"px"; //设置边界,当对象移动到右边界,左边距始终保持700px
if(demo1.offsetLeft>=700){
demo1.style.left=700+"px";
}
// 当对象移动到左边界,左边距始终为0px
if(demo1.offsetLeft<=0){
demo1.style.left=0+"px";
}
//当对象移动到下边界,上边距始终为400px
if(demo1.offsetTop>=400){
demo1.style.top=400+"px"; }
//当对象移动到上边界,上边距始终为0px
if(demo1.offsetTop<=0){
demo1.style.top=0+"px";
}
//显示鼠标坐标位置
var lan1=document.getElementById("lan1");
var lan2=document.getElementById("lan2");
lan1.value=e.clientX;
lan2.value=e.clientY; } //当鼠标松开时
demo1.onmouseup=function(){ //创建新标签<canvas>
var demo=document.createElement("canvas");
//动态设置<canvas>对象的样式
demo.style.cssText="width:100px;height:100px;position:absolute;left:"+left0+"px;"+"top:"+top0+"px;border:1px solid #ff0000";
//将对象加入到body中
var body=document.getElementsByTagName("body")[0];
body.appendChild(demo); var pen=demo.getContext("2d");
pen1.moveTo(2,2);
pen.lineTo(20,100);
pen.lineTo(200,40);
pen.lineTo(2,2);
pen.stroke();
} //双击鼠标时结束
window.ondblclick=function(){
alert("执行结束!");
}
}
</script> <div id="test"></div>
</body>
</html>
如果您觉得我写的东西对您有些帮助,请帮我点个推荐,互粉交个学习路上的好友,我是菜鸟,你的鼓励是我前进的动力。
html5 canvas画图之图形随拖动而复制(有操作指示)的更多相关文章
- html5 Canvas画图3:1px线条模糊问题
点击查看原文地址: html5 Canvas画图3:1px线条模糊问题 本文属于<html5 Canvas画图系列教程> 接上一篇canvas画线条教程 上次我们讲到,canvas有时候会 ...
- HTML5 canvas画图
HTML5 canvas画图 HTML5 <canvas> 标签用于绘制图像(通过脚本,通常是 JavaScript).不过,<canvas> 元素本身并没有绘制能力(它仅仅是 ...
- HTML5 Canvas 画图入门
HTML5 Canvas 画图入门 HTML5 Canvas 画图入门,仅供学习參考 <!DOCTYPE html> <html> <head> <meta ...
- 学习笔记:HTML5 Canvas绘制简单图形
HTML5 Canvas绘制简单图形 1.添加Canvas标签,添加id供js操作. <canvas id="mycanvas" height="700" ...
- html5 canvas 画图移动端出现锯齿毛边的解决方法
使用HTML5的canvas元素画出来的.在移动端手机上测试都发现画图有一点锯齿问题 出现这个问题的原因应该是手机的宽是720像素的, 而这个canvas是按照小于720像素画出来的, 所以在720像 ...
- HTML5 Canvas画图与动画学习59例
HTML5 Canvas画图与动画学习59例 学习HTML5 动画,画图的好资料. HTML5 Canvas画图与动画学习59例
- HTML5 Canvas 画图组件 All In One
HTML5 Canvas 画图组件 All In One Canvas SVG Canvas + SVG refs https://www.infoq.cn/article/1BVg9VDSmqyHv ...
- 玩转html5<canvas>画图
导航 前言 基本知识 绘制矩形 清除矩形区域 圆弧 路径 绘制线段 绘制贝塞尔曲线 线性渐变 径向渐变(发散) 图形变形(平移.旋转.缩放) 矩阵变换(图形变形的机制) 图形组合 给图形绘制阴影 绘制 ...
- 用HTML5 Canvas为Web图形创建特效
HTML5 Canvas 将使用像素在屏幕上绘制图形图像. 本节演示了五种用于操作像素以创建摄影特效的 Canvas 技术. 您可使用这些技术来生成独具特色的图像,为您的网站.博客.视频游戏画面.广告 ...
随机推荐
- C#联通新版验证码识别的实现
以前写了篇 联通充值卡自动充值的实现,最近发现联通官网改版了,随便看了下发现新版的验证码和以前的不同,发了点时间研究了下他的识别码,它现在的验证码如下 现在将识别步骤说下 1,转换灰度图片 2,清除2 ...
- python学习第二天
dict字典 把数据放入dict:直接赋值.初始化时指定 pop删除key set集合 add添加元素 remove删除元素 字符串str是不可变对象,对字符串的操作都会返回新的字符串 pass 什么 ...
- 15 个 Android 通用流行框架大全
1. 缓存 名称 描述 DiskLruCache Java实现基于LRU的磁盘缓存 2.图片加载 名称 描述 Android Universal Image Loader 一个强大的加载,缓存,展 ...
- 【Web前端】---js调用本地应用程序
最近进入了一个项目组,向大牛们一起学习如何搞开发,可谓是边开发边学习.就在前两天,我们的项目被领导们验收了一次,顺便给我们提了点新的需求,要求我们能够使用外在设备拍照上传.君要臣死,臣不能不死.更何况 ...
- Java 程序 ——感想
也许大家也有过这样的经历,我这的是受够了: 我们的专业选修课java课上老师留了一个作业,说做完了这个,就不用参加考试了,侥幸于懒惰的心理带领着我,光荣地接受了这个任务,而且按着老师的要求,不断地完善 ...
- -webkit-text-size-adjust
ios使用-webkit-text-size-adjust禁止调整字体大小 body{-webkit-text-size-adjust: 100%!important;} android使用以下代码, ...
- Base64编码保存到文件服务器
byte[] buffer = Convert.FromBase64String(param.Base64Code); System.Net.WebClient webClient = new Sys ...
- MIT 6.828 JOS学习笔记1. Lab 1 Part 1: PC Bootstrap
Lab 1: Booting a PC Part 1: PC Bootstrap 介绍这一部分知识的目的就是让你能够更加熟悉x86汇编语言,以及PC启动的整个过程,而且也会首次学习使用QEMU软件来仿 ...
- TweenMax_API介绍
构造函数:TweenMax(target:Object, duration:Number, vars:Object) target:Object -- 需要缓动的对象 duration:Number ...
- 静态数据成员(面向对象的static关键字)
静态数据成员: 在类内数据成员的声明前加上关键字static,该数据成员就是类内的静态数据成员.先举一个静态数据成员的例子. #include<iostream> using namesp ...