使用canvas画布利用js通过鼠标实现矩形的绘制(任意方向的绘制图形)

## 使用canvas画布利用js通过鼠标实现矩形的绘制(任意方向的绘制图形)(如果要绘制其他图形,做一点小改动就行了)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
        #cav{

            position: absolute;

            border:1px solid black;

        }
    </style>
</head>
<body>
<canvas id=‘cav‘ width="500" height="400" style=‘background-color: #F0F8FF‘></canvas>

<script>

    function MyPaint(id,color=‘red‘){

        var canvas = document.getElementById(id);

        this.canvas = canvas;

        this.color = color;

        this.ctx = this.canvas.getContext(‘2d‘);

        this.p1= {};

        this.p2 = {};

    }

    MyPaint.prototype.paintRect = function(){

        var myPaint = this;

        this.canvas.addEventListener(‘mousedown‘,function(e){

            console.info(‘mousedown‘,this);

            this.p1.x = e.offsetX;

            this.p1.y = e.offsetY;

            this.canvas.addEventListener("mousemove",myDrect);

            this.canvas.addEventListener("mouseup",function(){

                console.info("mouseup");

                console.info(myDrect);

                this.removeEventListener("mousemove",myDrect);

            })

        }.bind(this));

        function  myDrect(e){

            myPaint.p2.x = e.offsetX;

            myPaint.p2.y = e.offsetY;

            myPaint.ctx.width = myPaint.width;

            myPaint.ctx.height = myPaint.height;

            myPaint.ctx.fillStyle = ‘#FF0000‘;

            myPaint.ctx.strokeStyle = ‘#FF0000‘;

            var width = Math.abs(myPaint.p1.x-myPaint.p2.x);

            var height = Math.abs(myPaint.p1.y-myPaint.p2.y);

            myPaint.ctx.clearRect(0,0,myPaint.canvas.width,myPaint.canvas.height);

            myPaint.ctx.beginPath();
            if(myPaint.p2.x>=myPaint.p1.x){
                if(myPaint.p2.y>=myPaint.p1.y){
                    myPaint.ctx.rect(myPaint.p1.x,myPaint.p1.y,width,height);
                }else{
                    myPaint.ctx.rect(myPaint.p1.x,myPaint.p1.y,width,-height);
                }
            }else{
                if(myPaint.p2.y>=myPaint.p1.y){
                    myPaint.ctx.rect(myPaint.p1.x,myPaint.p1.y,-width,height);
                }else{
                    myPaint.ctx.rect(myPaint.p1.x,myPaint.p1.y,-width,-height);
                }

            }

            myPaint.ctx.stroke();

            myPaint.ctx.save();

        }

    }

    var  mp = new MyPaint(‘cav‘);

    mp.paintRect();

</script>
</body>
</html>

  

原文地址:https://www.cnblogs.com/Liang-Tsai/p/12611607.html

时间: 2024-10-29 07:26:26

使用canvas画布利用js通过鼠标实现矩形的绘制(任意方向的绘制图形)的相关文章

Particles.js基于Canvas画布创建粒子原子颗粒效果

文章目录 使用方法 自定义参数 相关链接 Particles.js是一款基于HTML5 Canvas画布的轻量级粒子动画插件,可以设置粒子的形状.旋转.分布.颜色等属性,还可以动态添加粒子,效果非常炫酷,能和鼠标互动吸附或者是躲避鼠标指针. 使用方法 1.该粒子动画库插件使用方法非常简单,首先要在页面中引入particles.js文件. <script src="js/particles.js"></script> 2.在页面中使用一个div来作为放置粒子的容器

Canvas画布

 canvas 使用 <canvas> 元素不是非常难但你需要一些基本的HTML和JavaScript知识.<canvas> 元素不被一些老的浏览器所支持,但是所有的主流浏览器的新近版本都支持.Canvas 的默认大小为300像素×150像素(宽×高,像素的单位是px).但是,可以使用HTML的高度和宽度属性来自定义Canvas 的尺寸.为了在 Canvas 上绘制图形,我们使用一个JavaScript上下文对象,它能动态创建图像( creates graphics on the

JS实现鼠标经过用户头像显示资料卡的效果,可点击

基于项目的须要.须要制作出例如以下的一种页面效果:当用户鼠标经过好友列表中好友头像时,显示该好友的基本资料.事实上也就是类似QQclient的那种功能. 网上找了非常多代码,基本都实现了鼠标悬浮之后弹出div,离开之后立即就消失了.还有些纯CSS的代码实现了这种效果,可是对我没用,我须要的是JS的(由于我的数据还要通过Ajax取得),而且鼠标离开后不能立即隐藏.这个div上还有功能入口.这个页面效果折腾了我一天.由此可见我的JS和CSS技术有待提高... 搜索了好久,最终发现了可行的2个思路例如

JavaScript之Canvas画布

canvas可以在页面中设定一个区域,再利用JavaScript动态地绘制图像. 基本用法 使用canvas元素,首先设置width和height属性,为其设置绘制区域的大小,   如果没有设置宽度和高度,是看不到元素的,不能在其区域画图,在开始标签和结束标签之间的信息是后备信息,当用户的浏览器不支持canvas元素时会显示,用于友好地提示用户. <canvas id="canvas" width="400" height="300">

拖拽系列二、利用JS面向对象OOP思想实现拖拽封装

接着上一篇拖拽系列一.JavaScript实现简单的拖拽效果这一篇博客将接着对上一节实现代码利用JS面向对象(OOP)思维对上一节代码进行封装; 使其模块化.避免全局函数污染.方便后期维护和调用:写到这里突然想起一句话“没有任何一个题目是彻底完成的.总还会有很多事情可做......” 我想这句话程序开发大概也适用吧,前端开发人员总是可以结合自己之前学到“拖拽”相关知识,不断扩展.完善.无穷无尽.......     利用匿名函数自执行实现封装 ;(function(){ //do somethi

【读书笔记《Android游戏编程之从零开始》】12.游戏开发基础(Canvas 画布)

1.Canvas 画布 画布类 Canvas 封装了图形和图片绘制等内容,此类常用的函数说明如下: drawColor(int color) 作用:绘制颜色覆盖画布,常用于刷屏 参数:颜色值,也可用十六进制形式表示(ARGB) drawText(String text,float x,float y,Paint paint) 作用:绘制文本字符 第一个参数:文本内容 第二.三个参数:文本的X.Y坐标 第四个参数:画笔实例 drawPoint(float x,float y,Paint paint

利用js闭包获取索引号

以tab选项卡效果为例: 网页中的选项卡效果 如图. 在鼠标点击规则标题的时候下面内容就会切换成规则的内容,这就是一个选项卡切换效果了. 标题和其内容是一一对应的. 在点击的时候就需要得到当前点击的索引号,用jquery的话可以直接通过.index()获取当时元素的索引值,那么用js呢?下面我们来利用js的闭包来实现获取索引. 页面代码如下: <!DOCTYPE html><html lang="en"><head>    <meta char

HTML5拖拽学习,canvas画布,

#拖拽学习要点 - draggable - ondragstart="drag(event)" - ondrop="drop(event)" - ondragover="fun2(event)" - dataTransfer - preventDefault ###draggable 主要用false或者true来设置文本或者图片是否可以在页面拖拽 ###ondragstart 主要在文本或者图片要拖拽的区域绑定事件,将event对象传过去--开

利用js加载本地图片预览功能

直接上代码: 经测试,除safari6包括6以下不支持,其他均可正常显示. 原因:safari6不支持filereader,同时不能使用IE滤镜导致失效. fix: 可以利用canvas,解决safari6的问题 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">