html5 canvas 微型绘图器

var canvas;
var context;

window.onload=function(){
    //取得<canvas>和绘图上下文
    canvas=document.getElementById("drawingCanvas");
    context=canvas.getContext("2d");
    //添加用于绘图操作的事件处理程序
    canvas.onmousedown=startDrawing;
    canvas.onmouseup=stopDrawing;
    canvas.onmouseout=stopDrawing;
    canvas.onmousemove=draw;
};

//记录此前为选择的颜色而被点击的img元素
var previousColorElement;

function changeColor(color,imgElement)
{
    //重新设置当前绘图要使用的颜色
    context.strokeStyle=color;
    //为刚被点击的img元素应用一个新样式
    imgElement.className="Selected";
    //恢复上次被单机的img元素
    if(previousColorElement!=null) previousColorElement.className="";
    previousColorElement=imgElement;
}
//记录此前为选择的粗细而被单击过的img元素
var previousThicknessElement;
function changeThickness(thickness,imgElement)
{
    //重新设置当前绘图要使用的粗细
    context.lineWidth=thickness;
    //为刚才点击过的img元素应用一个新样式
    imgElement.className="Selected";
    //恢复上次单击过的img元素
    if(previousThicknessElement !=null) previousThicknessElement.className="";
    previousThicknessElement=imgElement;
}

var isDrawing=false;

function startDrawing(e)
{
    //开始绘图
    isDrawing=true;

    //创建新路径(使用当前设置好的描边颜色和线条粗细)
    context.beginPath();

    //把画笔放到鼠标当前所在的位置
    context.moveTo(e.pageX-canvas.offsetLeft,e.pageY-canvas.offsetTop);
}

function draw(e)
{
    if(isDrawing==true)
    {
        //找到鼠标的位置
        var x =e.pageX-canvas.offsetLeft;
        var y=e.pageY-canvas.offsetTop;

        //画一条到新位置的线
        context.lineTo(x,y);
        context.stroke();
    }
}
function stopDrawing()
{
    isDrawing=false;
}
function clearCanvas()
{
    context.clearRect(0,0,canvas.width,canvas.height);
}


//保存图片
function saveCanvas()
{
    //找到img元素
    var imageCopy=document.getElementById("savedImageCopy");
    //在图像中显示画布数据
    imageCopy.src=canvas.toDataURL();
    //显示包含img元素的div,以便把图像显示出来
    var imageContainer=document.getElementById("savedCopyContainer");
    imageContainer.style.display="block";
}
html
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <link rel="stylesheet" href="./css/print.css">
         <script src="js/Paint.js"></script>

    </head>
    <body>
<div class="Toolbar">
    - Pen Color -<br>
    <img id="redPen" src="http://prosetech.com/html5/Chapter%2008/pen_red.gif" alt="Red Pen" onclick="changeColor('rgb(212,21,29)', this)">
    <img id="greenPen" src="http://prosetech.com/html5/Chapter%2008/pen_green.gif" alt="Green Pen" onclick="changeColor('rgb(131,190,61)', this)"> 
    <img id="bluePen" src="http://prosetech.com/html5/Chapter%2008/pen_blue.gif" alt="Blue Pen" onclick="changeColor('rgb(0,86,166)', this)">
  </div>
  <div class="Toolbar">
    - Pen Thickness -<br>
    <img src="http://prosetech.com/html5/Chapter%2008/pen_thin.gif" alt="Thin Pen" onclick="changeThickness(1, this)">
    <img src="http://prosetech.com/html5/Chapter%2008/pen_medium.gif" alt="Medium Pen" onclick="changeThickness(5, this)"> 
    <img src="http://prosetech.com/html5/Chapter%2008/pen_thick.gif" alt="Thick Pen" onclick="changeThickness(10, this)">
  </div>
  <div class="CanvasContainer">
    <canvas id="drawingCanvas" width="500" height="300"></canvas>
  </div>
  <div class="Toolbar">
    - Operations -<br>
    <button onclick="saveCanvas()">Save the Canvas</button>
    <button onclick="clearCanvas()">Clear the Canvas</button>
    <div id="savedCopyContainer">
      <img id="savedImageCopy"><br>
      Right-click to save ...
    </div>
  </div>

    </body>
</html>
body {
  background: white;
}

.Toolbar {
  float: left;
  font-family: 'Trebuchet MS'; 
  font-size: 14px;
  font-variant: small-caps;
  text-align: center;
  background: #F2F7FE;
  padding: 10px 15px 3px 10px;
  margin-bottom: 1px;
  margin-right: 1px;
  border: 1px solid #7B899B;
}

.Toolbar button {
  padding: 6px;
  margin: 7px 2px;
  font-variant: normal;
  font-size: 12px;
}

.CanvasContainer {
  clear: both;
}

canvas {
  border: 1px solid #7B899B;
}

img {
  padding: 2px;
  border: 2px solid #F2F7FE;
}

img:hover {
  border: 2px groove #E4F0FE;
  background: white;
}


img.Selected {
  border: 2px groove #E4F0FE;
}

#savedCopyContainer {
  display: none;
}

#savedCopyContainer img {
  width: 250px;
  height: 150px;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值