canvas实现简单的画图功能

【canvas】canvas基础使用(七):绘制图像 学习canvas如何绘制图片或视频。给定一个图像,一般使用drawImage()方法绘制。Canvas 2D API 中的 CanvasRenderingContext2D.drawImage() 方法提供了多种在画布(Canvas)上绘制图像的方式。 语法: 指定绘制位置快速绘制: drawImage(image, dx, dy); 指定绘制位置宽高快速绘制: drawImage(image, dx, dy, dWidth, dHeight); 指定图像被绘制区域和绘制区域绘制: drawImage(im 阅读详情

canvas实现简单的画图功能

功能描述:
有红绿蓝三种颜色的画笔,可以选择画笔的粗细,画出的图可以保存到右边的六个画框中。当右边的六个画框都画满之后,便不能继续保存来了。可以清除画框,清除画布。保存的图片可以右击保存为png格式。

实现效果如图所示:
这里写图片描述

实现代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script type="text/javascript">
        var bot;//画布div
        var X,Y,X1,Y1;//坐标
        var flag=0;
        var time;//定时器ID
        var color=0;//记住所选颜色
        var lineW=2;//画笔粗细
        var canvas;//创建画布
        var context;//获取上下文
        var isMouseDown=false;//记录鼠标是否按下

        window.onload=function(){
            //创建画布
            canvas=document.getElementById("can");
            //获取上下文
            context=canvas.getContext("2d");
            bot=document.getElementById("bottom");
            bot.onmousedown=mouseDownAction;
            bot.onmousemove=mouseMoveAction;
            document.onmouseup=mouseUpAction;
        }

        /**
         *选中画笔颜色
         */
        function pen_click(num){
            var chk=document.getElementsByTagName("input");
            for(var i=0;i<chk.length;i++){
                if(i==num){
                    chk[i].checked=true;
                    color=i;
                }else {
                    chk[i].checked="";
                }
            }
        }

        /**
         * 画笔粗细
         */
        function line_wid(num){
            lineW=num;
        }

        /**
         *鼠标按下
         */
        function mouseDownAction(e){
            isMouseDown=true;
            //记录下鼠标点击的时候的位置
            X= e.offsetX;
            Y= e.offsetY;
        }

        /**
         *鼠标移动
         */
        function mouseMoveAction(e){
            if(isMouseDown){
                X1= e.offsetX;
                Y1= e.offsetY;
                drowline(X,Y,X1,Y1);
                flag++;
            }
        }

        /**
         *鼠标弹起来
         */
        function mouseUpAction(e){
            isMouseDown=false;
            flag=0;
        }

        /**
         * 绘制
         */
        function drowline(num1,num2,num3,num4){
            //开启新的路径
            if(flag)
                context.beginPath();
            //移动画笔的初始位置
            context.moveTo(num1,num2);
            context.lineWidth=lineW;
            if(color==0){
                context.strokeStyle="red";
            }else if(color==1){
                context.strokeStyle="green";
            }else if(color==2){
                context.strokeStyle="blue";
            }
            //移动画笔的结束位置
            context.lineTo(num3,num4);
            //开始绘制
            context.stroke();

            if(flag!=0){
                X=X1;
                Y=Y1;
            }
        }

        function save_pic(){//保存画图
            var div=document.getElementsByClassName("div");
            if(div[div.length-1].innerHTML!=""){
                alert("存储空间已满,无法保存,请清除空间!")
            }
            var str=canvas.toDataURL("image/png",0.92);
            for(var i=0;i<div.length;i++){
                if(div[i].innerHTML==""){
                    var s="<img src='"+str+"' style='width: 250px;height: 250px;'>";
                    div[i].innerHTML=s;
                    break;
                }
            }
        }

        function clear_pic(){//清除画布
            context.clearRect(0,0,500,500);
        }

        function clear_save(){//清除保存
            var div=document.getElementsByClassName("div");
            for(var i=0;i<div.length;i++){
                div[i].innerHTML="";
            }
        }
    </script>
</head>
<body>
<div id="left">
    <div id="top">
        <div class="top_left"><!-- 画笔颜色选择 -->
            <img src="img/pen_red.gif" style="border: 2px solid transparent" onclick="pen_click(0)"><input type="checkbox" style="position: absolute;top: 38px;left: 88px" checked onclick="pen_click(0)">
            <img src="img/pen_green.gif" style="border: 2px solid transparent" onclick="pen_click(1)"><input type="checkbox" style="position: absolute;top: 38px;left: 145px" onclick="pen_click(1)">
            <img src="img/pen_blue.gif" style="border: 2px solid transparent" onclick="pen_click(2)"><input type="checkbox" style="position: absolute;top: 38px;left: 202px" onclick="pen_click(2)">
        </div>
        <div class="top_right"><!-- 画笔粗细选择 -->
            <img src="img/pen_thin.gif" onclick="line_wid(2)">
            <img src="img/pen_medium.gif" onclick="line_wid(4)">&nbsp;&nbsp;&nbsp;
            <img src="img/pen_thick.gif" onclick="line_wid(8)">
        </div>
    </div>
    <div id="bottom"><!-- 画板 -->
        <canvas id="can" width="500" height="500"></canvas>
    </div>
</div>
<div id="right">
    <div id="div1" class="div"></div>
    <div id="div2" class="div"></div>
    <div id="div3" class="div"></div>
    <div id="div4" class="div"></div>
    <div id="div5" class="div"></div>
    <div id="div6" class="div"></div>
</div>
<div class="bottom">
    <hr>
    <input type="button" value="保存图片" style="position: absolute;top: 560px;left: 0px" onclick="save_pic()">
    <input type="button" value="清除画布" style="position: absolute;top: 560px;left: 66px"onclick="clear_pic()">
    <input type="button" value="清除保存" style="position: absolute;top: 560px;left: 132px"onclick="clear_save()">
</div>
</body>
<style>
    *{
        margin: 0px;
        padding: 0px;
    }
    #left{
        width: 500px;
        height: 550px;
        float: left;
    }
    .top_left{
        margin-left: 50px;
        float: left;
    }
    .top_right{
        margin-right: 50px;
        float: right;
    }
    #bottom{
        width: 500px;
        height: 500px;
        border: solid 2px coral;
        float: left;
    }
    #right{
        width: 826px;
        height: 550px;
        border: solid 2px red;
        float: right;
    }
    .div{
        width: 250px;
        height: 250px;
        border: solid 2px orange;
        margin: 15px 0 0 15px;
        float: left;
    }
</style>
</html>
HTML5 高级之canvas 绘制图形 canvas是HTML5中新增的标签,像所有dom一样,拥有自己的属性、方法、和事件,其中就有绘图的方法,js能够调用它在网页上完成绘图。 canvas也是HTML5中最强大的特性之一,允许开发者使用动态和交互式方法在web上实现桌面应用程序的功能   canvas元素会在网页上创建一个空白区域,然后通过API操作这个区域,与空白的div元素相似,用途完全不同     语法:&lt;c... 阅读详情

相关推荐

Html5 Canvas+Javascript实现一个简单画图程序(一)

目标: 铅笔工具绘画,绘制常见几何形状(直线,矩形,圆形,多边形)。 实现: 画图的核心是依靠html5 的canvas标签,一个canvas的声明类似下面的形式:    这样就在你的html页面里面写进了一个宽为800像素,高为500像素的canvas。 然后有了canvas还不够,就像它的英文意思一样,它只是供你施展才华的画布。为了能够画图图形,你还需要什么呢?画笔(conte

阳光的尾巴 6254

canvas 绘制图片

前面我们了解了canvas的一些基本使用方法,在canvas中我们还可以在canvas中直接绘制图片,在canvas中绘制图片主要使用到drawImage方法 一:drawImage方法参数有三中情况 1:三个参数 ctx.drawImage(image,dx,dy) image:需要绘制的img图片 dx,dy:绘制的img图片在canvas中的坐标(x,y) 2:五个参数 c...

huaweichenai的博客 9721

canvas绘制图片的三种方法(图文示例)

如何使用canvas来绘制图片呢?这里有三种方法。 语法: drawImage(image, dx, dy) drawImage(image, dx, dy, dWidth, dHeight) drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight)

大剑师兰特的GIS世界 4360

canvas——绘制图片

绘制图片(drawImage) (重点) 1、基本绘制图片的方式 context.drawImage(img,x,y); 参数说明: x,y 绘制图片左上角的坐标, img是绘制图片的dom对象。 2、 在画布上绘制图像,并规定图像的宽度和高度 context.drawImage(img,x,y,width,height); 参数说明:width 绘制图片的...

sleepwalker_1992的专栏 1万+

电池建模 004- Battery (Table-Based)表格化电池模型入门学习

对于 Battery (Table-Based) 模块,提供了多种内置参数。该预参数化数据允许您将模块设置为代表特定供应商的组件。这些电池的参数化可以与制造数据表中的放电曲线相匹配。要加载预定义的参数化,双击 Battery (Table-Based) 模块,点击 Selected part 参数中的 超链接,然后在块参数化管理器窗口中,从可用组件列表中选择所需部件。 (默认)选项用于参数化模块,以代表特定供应商的组件。

qq_63860930的博客 2734

lstm如何输入多维序列_深度学习也可以做时间序列异常诊断

最近在看的一篇论文里,用到了GRU、VAE等技术来做多维时间序列异常诊断。那么今天首先来聊一聊深度学习的基础知识,然后简单说一下论文。以下基础知识部分的内容,主要来源于李宏毅老师的课程。有兴趣的可以去看李老师的课程哦https://www.bilibili.com/video/BV1JE411g7XF?p=1 1、GRU(Gate Recurrent Unit):GRU是循环神经网络(Recurr...

weixin_30899789的博客 2834

HTML通过canvas实现简单的画图功能

  功能描述:  有红绿蓝三种颜色的画笔,可以选择画笔的粗细,画出的图可以保存到右边的六个画框中。当右边的六个画框都画满之后,便不能继续保存来了。可以清除画框,清除画布。保存的图片可以右击保存为png格式。 实现效果如图所示:  实现代码: &lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;meta cha...

CaseyWei 5463

5G NR PDCCH实战解析:从DCI格式到CORESET配置的完整指南

本文深入解析5G NR PDCCH的实战配置,涵盖DCI格式选择、CORESET配置及Search Space优化等关键内容。基于3GPP R16标准,提供现网部署中的典型问题解决方案,如覆盖边缘失步、多用户调度冲突等,帮助提升控制信令传输效率。特别针对5G NR PDCCH的灵活资源分配和自适应编码机制进行详细探讨。

weixin_29231263的博客 499

通过HTML的canvas实现简单的画图功能

功能描述:有红绿蓝三种颜色的画笔,可以选择画笔的粗细,画出的图可以保存到右边的六个画框中。当右边的六个画框都画满之后,便不能继续保存来了。可以清除画框,清除画布。保存的图片可以右击保存为png格式。 实现效果如图所示: 实现代码: <!DOCTYPE html> <html lang="en"> <head> <me...

Clotho2012的博客 220

“华为杯“第十四届中国研究生数学建模竞赛-E题:多波次导弹发射中的规划问题(续)(附MATLAB代码实现)

将最长暴露时间的发射装置按照“优先隐蔽于转载地”,即增加该种发射装置的隐蔽时长,从而达到缩短最长暴露时间的目的。8.2 模型建立。

getusushu的博客 299

华为用自研的MetaERP替换全球顶级的SAP ERP系统,其难度与风险远超一次普通的技术升级,它是一场战略级的、涉及业务筋骨的系统性工程

华为成功用自研MetaERP替换SAP系统,这是一项极具挑战的战略工程。面临四大难度:业务复杂度高(170多国业务)、数据迁移量大(20年历史数据)、技术集成复杂(重构生态系统)、人员适应周期长。同时伴随四大风险:业务中断、数据失真、成本超支、供应链协同问题。华为成功的关键在于:生存压力驱动的战略决心、强大的软件研发能力、以自身业务为试验场、分步实施策略。这一案例证明中国企业能攻克高端软件壁垒,但对大多数企业而言,核心系统替换需谨慎评估风险,建议采用渐进式替代策略。

金牌架构师 535

RPG Maker存档修改与解析:RMToolbox从备份到验证实战

游戏存档本质上是序列化后的状态数据,记录了开关、变量、货币等关键逻辑节点。在RPG Maker开发中,快速验证分支剧情或本地化效果常受限于原生存档的封闭格式,直接编辑往往导致校验失败或读取异常。通过解析存档结构和回写机制,开发者能够在合法授权下实现可视化修改、备份恢复与反篡改验证。RMToolbox作为一款开源工具箱,将RPG Maker的存档从“黑盒”转化为“可读、可改、可验证”的普通数据文件,支持跨版本解析、字段定位与批量脚本处理,显著提升调试效率。适用于单机游戏测试、MOD兼容性验证和本地化校对,同时

weixin_34068198的博客 455

基于YOLOv11的手写数字与符号识别系统设计与实现

手写数字与符号识别系统需要丰富多样的训练数据才能达到理想的泛化性能。MNIST:包含70,000个手写数字样本(0-9),28x28灰度图像优点:干净整齐,适合初学者缺点:多样性不足,只有数字EMNIST:MNIST的扩展,包含数字、字母(大小写)和特殊符号样本量:814,255张图像覆盖62个类别(10数字+26小写字母+26大写字母)HASYv2:专门的手写符号数据集包含369个不同符号类别约168,000个标注实例包括数学符号、箭头、括号等:英文手写文本数据库。

YOLO 292

eclipse安卓画图板(简单画条线)

Android 简单画图板界面(附有代码) 进行Android画图板实现,我们对比一下在Java界面中画图板所需要的内容 1.JFrame ———— ImageView 组件,显示画图的内容 2.BufferedImage ———— Bitmap 缓存,画图的位置 3.Graphics ———— 画图形 Canvas 设置绘图样式 Paint(在安卓中,画图与前者略有不同,分为了两个部分) 4.MouseListener ———— OnTouchListener 监听器(鼠标监听

qq_49639550的博客 2108

手把手教你学pcie--用Verilog搭建PCIe控制器核心模块

PCIe控制器是硬件设计的核心模块,负责实现设备与主机之间的高速通信。本文将以Verilog语言为例,分步骤讲解如何从零构建一个简化的PCIe控制器核心模块,涵盖事务层(TLP)生成、数据链路层(DLLP)处理和物理层(PHY)接口适配。目标是为嵌入式开发者、FPGA工程师提供一个可扩展的硬件设计框架。​。

MHD0815的博客 340

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

python安装后不能画图_Python实现画图软件功能,windows的画图功能不能实现

Python实现画图软件功能,windows的画图功能不能实现概述虽然Python的强项在人工智能,数据处理方面,但是对于日常简单的应用,Python也提供了非常友好的支持(如:Tkinter),本文主要一个简单的画图小软件,简述Python在GUI(图形用户界面)方面的应用,仅供学习分享使用,如有不足之处,还请指正。设计思路页面布局:主要分为上下两部分 a. 绘图区域,本例以Canvas实现 b...

weixin_39611161的博客 573

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Android基于Canvas,自定义View实现简单的画图工具

我们要实现的功能:1、点击相应的按钮,在图上画出相应的图形,并实时展现在画布上。2、橡皮檫功能,点击橡皮擦按钮,可以擦除画图上的图形。3、点击确定按钮可以停止当前的绘制。4、点击保存按钮可以把绘制的图形保存为jpg格式的图片文件。具体如下图:具体实现步骤:1、先自定义view,在view里实现各种画图的操作,代码如下:public class TestView extends View { ...

weixin_42058532的博客 698

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

微信小程序canvas 绘画组件的使用,画图

微信小程序canvas 绘画组件的使用,画图 canvas 绘画组件 文章目录微信小程序canvas 绘画组件的使用,画图闲来没事写个画图的小工具吧,于是就用到了小程序的canvas组件一、先来看下效果吧!二、使用步骤1.引入库2.读入数据总结 闲来没事写个画图的小工具吧,于是就用到了小程序的canvas组件 提示:以下是本篇文章正文内容,下面案例可供参考 一、先来看下效果吧! 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下

heshouwu_1026的博客 2693

自学web前端练手——HTML5的canvas实现网页画图(html5+css+js)

html5的canvas实现网页画图步骤: ①定义画布(html5)②设置画布样式(CSS)③js准备绘图的上下文环境④js绘图 效果如下: 点击按钮可以改变画笔颜色和画笔粗细大小。随便画的_(:з」∠)_不要嫌弃我手抖 代码如下: .html <!DOCTYPE html> <html lang="en"> <head> <meta charset...

lvshaoshishang的博客 4376

JS实现简易画图工具

【Canvas】画布 Canvas为HTML5中新加入的标签, JS 可在上面进行绘画,Canvas一个矩形的单元。Canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。 绘制图形的步骤: 1、获取画布节点。 2、获取上下文(即在这个区域进行绘画)getContext。 3、使用 JavaScript 来进行绘制。 ****************************************************************下面用JS实现简易画图工具*******

weixin_49826762的博客 2651

Html5 canvas标签实现简易画图板

* { margin: 0; padding: 0; } .zt { width: 600px; height: 600px; border: solid 4px rgba(0, 0, 0, 0.67); margin-le

yyf0409的博客 1025

canvas简单画图板

canvas简单画图板 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> canvas{ border: 1px so...

HY200043的博客 571

用java fx画笑脸的鼻子_canvas实现简单的画图工具中画笔效果,外加画好的笑脸

canvas实现简单的画图工具中画笔效果,外加画好的笑脸var canvas = document.getElementsByTagName('canvas')[0];var con = canvas.getContext('2d');canvas.onmousedown = function(e){var mx = e.layerX,my = e.layerY;con.moveTo(mx,my)...

weixin_34487462的博客 239

html简单画笔效果怎么做,javascript+html5实现在网页上画图效果

这是一个用javascript 在canvas 上实现的简单的画图应用,用支持html5 的浏览器便可在下面的区域进行绘画:您的浏览器不支持canvas!功能很简单,原理其实和拖放是类似的,主要是三个事件:1. 在canvas 上绑定mousedown 事件以标志绘画的开始(调用moveTo 移动画笔)2. 在document 上绑定mousemove 事件来处理绘画时的行为(调用lineTo 以...

weixin_35661054的博客 1051
上一篇: JS 实现div元素的拖动
下一篇: java对象内存的存储
烂笔头NI
博客等级 码龄9年 7粉丝 27原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值