一个简单的html5画板

效果图如下:利用鼠标来画图

代码如下

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>My Paint</title>
</head>
<body>
    <canvas id="container" width="500" height="400" style="border: solid 1px">your browser does not support the canvas tag </canvas>

    <script type="text/javascript">
        var canvas;
        var context;
        canvas = document.getElementById('container');
        context = canvas.getContext('2d');



        //注册相关鼠标事件
        canvas.onmouseup = function(e) {
            flag = false;

        }

        canvas.onmousemove = function(e) {
            if (flag == true) {
                addClick(e.pageX, e.pageY, flag);
                redraw();
            }
        }

        canvas.onmousedown = function(e) {
            flag = true;
            redraw();
        }

        var flag; //是否被按下
        var point = {};
        point.isFirst = true;
        var clickX = new Array();
        var clickY = new Array();
        var clickDrag = new Array();

        function addClick(x, y, isClick) {
            clickX.push(x);
            clickY.push(y);
            clickDrag.push(isClick);
        }

        function redraw() {
            //设置上下文的样式
            // 创建渐变
            var gradient = context.createLinearGradient(0, 0, canvas.width, 0);
            gradient.addColorStop("0", "magenta");
            gradient.addColorStop("0.5", "blue");
            gradient.addColorStop("1.0", "red");
            // 用渐变进行填充
            context.strokeStyle = gradient;
            //context.strokeStyle = "#FFB33C";
            context.lineWidth = 5;
            context.lineJoin = "round";
            //开始对每一个位置进行画线
            while (clickX.length > 0) {
                //保存上一个结点
                point.srcx = point.descx;
                point.srcy = point.descy;
                //保存当前结点
                point.descx = clickX.pop();
                point.descy = clickY.pop();
                //记录是否点下
                point.drag = clickDrag.pop();
                //开始路径
                context.beginPath();

                if (point.isFirst == false && point.drag == true) {
                    context.moveTo(point.srcx, point.srcy);
                }
                else {
                    context.moveTo(point.descx-1, point.descy);
                    point.isFirst == false;
                }

                context.lineTo(point.descx, point.descy);

                context.closePath();
                context.stroke();

            }
        }
    </script>

</body>
</html>

实际效果如图

your browser does not support the canvas tag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值