HTML5实现涂鸦板

原文:HTML5实现涂鸦板

最近闲的,看了看html5,强大的绘图功能让我惊奇,于是,写了个小玩意---涂鸦板,能实现功能有:画画,改色,调整画笔大小

html5的绘图可以分为点,线,面,圆,图片等,点和线,这可是所有平面效果的基点,有了这两个东西,没有画不出来的东西,只有想不到的算法。

先上代码了:

html

1 <body style="cursor:pointer">
2  <canvas id="mycavas" width="1024" height="400" style="border:solid 4px #000000"></canvas><!--画布-->
3         <input type="color" id="color1" name="color1"/><!--设色器-->
4         <output name="a" for="color1" onforminput="innerHTML=color1.value"></output>
5          <input type="range" name="points" id="size" min="5" max="20" /><!--拖动条-->
6 </body> 

效果:

好了,一个简陋的画图界面就搞好啦,

下面开始写一些画线的代码

 1 $.Draw = {};
 2 $.extend($.Draw, {
 3     D2: "",
 4     CX:"",
 5     Box: "mycavas",//画布id
 6     BoxObj:function(){//画布对象
 7         this.CX=document.getElementById(this.Box);
 8     },
 9     D2:function(){//2d绘图对象
10        this.D2 = this.CX.getContext("2d");
11     },
12     Cricle: function (x, y, r, color) {//画圆
13         if (this.D2) {
14             this.D2.beginPath();
15             this.D2.arc(x, y, r, 0, Math.PI * 2, true);
16             this.D2.closePath();
17             if (color) {
18                 this.D2.fillStyle = color;
19             }
20             this.D2.fill();
21         }
22     },
23     init: function () {//初始化
24         this.BoxObj();
25         this.D2();
26     }
27
28 })

相信这里的简单代码大家都看得懂,主要就是创建了一个对象,包含创建画布,创建2d对象,画圆方法,和对象初始化方法。

接下里前台html页面来调用这个对象

看代码:

 1         var color = "#000000";//初始化颜色
 2         var size = 5;//初始化尺寸
 3         document.getElementById('color1').onchange = function () {
 4             color = this.value;
 5         };
 6         document.getElementById('size').onchange = function () {
 7             size = this.value;
 8         };
 9         $.Draw.init();//初始化
10         var tag = false;//控制鼠标当前状态并起到开启油墨开关的作用
11         var current = {};//存储鼠标按下时候的点
12         document.onmousedown = function (option) {//鼠标按下事件
13             current.x = option.x;
14             current.y = option.y;
15             $.Draw.Cricle(option.x, option.y, size, color);
16             tag = true;
17         }
18         document.onmouseup = function () {//鼠标抬起事件
19             tag = false;
20         }
21         document.onmousemove = function (option) {//鼠标移动事件
22             if (tag) {
23                 if (size >= 0) {
24                     $.Draw.Cricle(option.x, option.y, size, color);
25                 }
26             }
27         }

 

这段代码主要有如下几个意思

1.捕获颜色空间和拖动条控件的change事件,从而获取对应的颜色和尺寸的数值,存储下来供下面画线用

2.初始化画图对象

3.捕获鼠标的按下,抬起和移动事件,关键在一个开关可以控制油墨

好了,一个简单的涂鸦板就好了,上我的书法:

是不是有点闲的蛋疼呢,呵呵!书法不如当年

时间: 2024-08-29 01:30:29

HTML5实现涂鸦板的相关文章

javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板_javascript技巧

js+html5 canvas实现的涂鸦画板特效,可调画笔颜色|粗细|橡皮,可以保存涂鸦效果为图片编码,非常适合学习html5的canvas,必须支持html5的浏览器才能看到效果. 复制代码 代码如下: <!doctype html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>javascri

[Qt教程] 第17篇 2D绘图(七)涂鸦板

[Qt教程] 第17篇 2D绘图(七)涂鸦板 楼主  发表于 2013-5-2 21:37:41 | 查看: 1255| 回复: 16 涂鸦板 版权声明 该文章原创于Qter开源社区(www.qter.org),作者yafeilinux,转载请注明出处! 导语        通过前面几节的学习,大家应该已经对Qt中2D绘图有了一定的认识,这一节我们将应用前面讲到的内容,编写一个简单的涂鸦板程序,这一节只是实现最基本的鼠标画线功能. 环境:Windows Xp + Qt 4.8.4+QtCreat

Windows 8 Store Apps学习(51) 输入: 涂鸦板

介绍 通过 Pointer 相关事件实现一个具有基本功能的涂鸦板 通过 InkManager 实现一个功能完善的涂鸦板 示例 1.演示如何通过 Pointer 相关事件实现一个只有基本功能的涂鸦板 Input/Ink/Simple.xaml <Page x:Class="XamlDemo.Input.Ink.Simple" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xml

背水一战 Windows 10 (60) - 控件(媒体类): Pointer 涂鸦板, InkCanvas 涂鸦板

原文:背水一战 Windows 10 (60) - 控件(媒体类): Pointer 涂鸦板, InkCanvas 涂鸦板 [源码下载] 背水一战 Windows 10 (60) - 控件(媒体类): Pointer 涂鸦板, InkCanvas 涂鸦板 作者:webabcd 介绍背水一战 Windows 10 之 控件(媒体类) 通过处理 Pointer 相关事件实现一个简单的涂鸦板 InkCanvas 基础知识 示例1.演示如何通过 Pointer 相关事件的处理,来实现一个简单的涂鸦板Co

Silverlight实用窍门系列:50.InkPresenter涂鸦板的基本使用,以及将效果保存为Png图片【附带源码实例】

   在Silverlight中我们有时候需要手工绘制线条或者直线等,在这里我们认识一下InkPresenter控件,它将支持用户使用鼠标.手写板等工具来绘制图形或者笔迹,用途为涂鸦.笔迹确认等等.         InkPresenter是继承于Canvas控件的支持所有的Canvas属性,并且其内部还可以嵌套显示其他控件.InkPresenter控件的显示分为三层:底层是InkPresenter的Background.中间层是InkPresenter的Children属性的控件.最后才是St

Android 开发实例简单涂鸦板_Android

       在Android上开发一些小应用既可以积累知识又可以增加乐趣,与任务式开发不同,所以想到在Android系统上实现一个简单的涂鸦板,这是我们练手的一种好的方法.        涂鸦板应用的代码实现        新建工程MyWall,修改/res/layout/main.xml文件,在里面添加一个SurfaceView和两个Button,用到了RelativeLayout布局,完整的main.xml文件如下: XML/HTML代码 <?xml version="1.0&quo

6月7日蚕豆网不推荐的Android应用:《手机涂鸦板》

前言:如雨后春笋般杂乱滋生的Android app遍布于网络中.下载平台中.用户的手机中,目前由于监管不严.开放性过大这些应用的安全性便成了当前Android手机最大问题.通讯录被复制.私人照片丢失.信息被公开等等事件的出现,其罪魁祸首当属那些存在安全隐患.内藏恶意代码的Android手机应用.鉴于此情况, 蚕豆网联合<安全管家>定 期为大家审查Android应用的安全性,尽我们最大力量来帮助用户来认清app.选择app,把最安全.最稳定的Android环境奉献给广大用户.应用名称:手机涂鸦板

Android 开发实例简单涂鸦板

在Android上开发一些小应用既可以积累知识又可以增加乐趣,与任务式开发不同,所以想到在Android系统上实现一个简单的涂鸦板,这是我们练手的一种好的方法. 涂鸦板应用的代码实现 新建工程MyWall,修改/res/layout/main.xml文件,在里面添加一个SurfaceView和两个Button,用到了RelativeLayout布局,完整的main.xml文件如下: XML/HTML代码 <?xml version="1.0" encoding="utf

实现简单的手写涂鸦板(demo源码)

     在一些软件系统中,需要用到手写涂鸦的功能,然后可以将涂鸦的结果保存为图片,并可以将"真迹"通过网络发送给对方.这种手写涂鸦功能是如何实现的了?最直接的,我们可以使用Windows提供的GDI技术或GDI+技术来实现绘图功能.但是,要实现一个如此简单的涂鸦板,也不是那么容易的事情.幸运的是,我们可以直接使用OMCS提供的内置集成了这种功能的一个WinForm控件HandwritingPanel.       HandwritingPanel控件的主要接口如下图所示: /// &