一个简单的html5画板

jopen 11年前
    <!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>Paint</title>            <script type="text/javascript" src="draw.js" language="javascript"></script>        </head>        <body>            <div>                <canvas id="myCanvas" style="border: 2px solid red; background-image:url(juren.jpg)" height="349px" width="349px"></canvas>            </div>            <select name="kind" id="k" onchange="KarlChangeColor()">                  <option value="black">黑色</option>                  <option value="blue">蓝色</option>                  <option value="red">红色</option>                  <option value="green">绿色</option>                  <option value="yellow">黄色</option>                  <option value="purple">紫色</option>                  <option value="white">橡皮</option>            </select>            <input type="text" value="4" id="karlline" onchange="KarlChangeLineWidth()"/>        </body>        </html>  
这是js文件:
    // JavaScript Document            var colorKarlDraw = "black";            var LineWidth = 4;                        function KarlChangeLineWidth()            {                var KarlColorWidth = document.getElementById("karlline").value;                LineWidth = KarlColorWidth;            }                        function KarlChangeColor()            {                var KarlColor = document.getElementById("k").value;                colorKarlDraw = KarlColor;            }                            window.onload = function () {                    var canvas = document.getElementById("myCanvas");                    var ctx = canvas.getContext("2d");                            //鼠标左键按下                    canvas.onmousedown = function (e) {                        //开始记录路径                        ctx.beginPath();                        //将光标焦点移动到鼠标点击的位置                        ctx.moveTo(e.clientX - 10, e.clientY - 10);                        //设置当前绘线的粗细(默认1.0)[由于画布的坐标和像素并不是直接对应的,所以,此属性会有0.5像素的偏差]                        ctx.lineWidth = LineWidth;                        //设置绘线颜色                        ctx.strokeStyle = colorKarlDraw;                        //                //设置渐变(会替换掉绘线颜色)                        //                var lingrad = ctx.createLinearGradient(0, 0, 0, 600);                        //                lingrad.addColorStop(0, "#00ABEB");                        //                lingrad.addColorStop(0.5, "#fff");                        //                lingrad.addColorStop(1, "#66CC00");                        //                ctx.strokeStyle = lingrad;                                //设置绘线透明度(0.0-1.0默认1.0)                        ctx.globalAlpha = 1.0;                        //设置绘线端点显示的样子(round/butt/square)                        ctx.lineCap = "round";                        //设置线段拐角连接处显示的样子(round/bevel/miter默认)                        ctx.lineJoin = "round";                                //当鼠标左键按下时,监听鼠标移动事件                        canvas.onmousemove = function (e) {                            //用线段连接点                            ctx.lineTo(e.clientX - 10, e.clientY - 10);                            //用笔画描绘路径[可以试一下fill(),看看是什么效果哦]                            ctx.stroke();                        }                    }                    //当鼠标按下后,释放鼠标时,停止监听鼠标移动事件                    canvas.onmouseup = function (e) {                        canvas.onmousemove = null;                    }                    //直线渐变的示例                    function drawLinear() {                        // Create gradients(x1,y1,x2,y2)                        var lingrad = ctx.createLinearGradient(0, 0, 0, 150);                        //上色(position,color)[position value between 0.0 and 1.0]                        lingrad.addColorStop(0, 'blue');                        lingrad.addColorStop(0.5, '#fff');                        lingrad.addColorStop(0.5, '#66CC00');                        lingrad.addColorStop(1, 'red');                                var lingrad2 = ctx.createLinearGradient(0, 50, 0, 95);                        lingrad2.addColorStop(0.5, '#000');                        lingrad2.addColorStop(1, 'rgba(0,0,0,0)');                                // assign gradients to fill and stroke styles                        ctx.fillStyle = lingrad;                        ctx.strokeStyle = lingrad2;                                // draw shapes                        ctx.fillRect(10, 10, 130, 130);                        ctx.strokeRect(50, 50, 50, 50);                            }                    //径向渐变的示例                    function drawRadial() {                        var ctx = document.getElementById('myCanvas').getContext('2d');                                // Create gradients(x1,y1,r1,x2,y2,r2)                        var radgrad = ctx.createRadialGradient(45, 45, 10, 52, 50, 30);                        radgrad.addColorStop(0, '#A7D30C');                        radgrad.addColorStop(0.9, '#019F62');                        radgrad.addColorStop(1, 'rgba(1,159,98,0)');                                var radgrad2 = ctx.createRadialGradient(105, 105, 20, 112, 120, 50);                        radgrad2.addColorStop(0, '#FF5F98');                        radgrad2.addColorStop(0.75, '#FF0188');                        radgrad2.addColorStop(1, 'rgba(255,1,136,0)');                                var radgrad3 = ctx.createRadialGradient(95, 15, 15, 102, 20, 40);                        radgrad3.addColorStop(0, '#00C9FF');                        radgrad3.addColorStop(0.8, '#00B5E2');                        radgrad3.addColorStop(1, 'rgba(0,201,255,0)');                                var radgrad4 = ctx.createRadialGradient(0, 150, 50, 0, 140, 90);                        radgrad4.addColorStop(0, '#F4F201');                        radgrad4.addColorStop(0.8, '#E4C700');                        radgrad4.addColorStop(1, 'rgba(228,199,0,0)');                                // draw shapes                        ctx.fillStyle = radgrad4;                        ctx.fillRect(0, 0, 150, 150);                        ctx.fillStyle = radgrad3;                        ctx.fillRect(0, 0, 150, 150);                        ctx.fillStyle = radgrad2;                        ctx.fillRect(0, 0, 150, 150);                        ctx.fillStyle = radgrad;                        ctx.fillRect(0, 0, 150, 150);                    }                    //用图案填充画布的示例                    function drawImage() {                        var ctx = document.getElementById("myCanvas").getContext("2d");                        var img = new Image();                        img.src = "Images/1.jpg";                        img.onload = function () {                            var ptrn = ctx.createPattern(img, "repeat");                            ctx.fillStyle = ptrn;                            ctx.fillRect(0, 0, 400, 400);                        }                    }                    //设置阴影的示例                    function drawText() {                        var ctx = document.getElementById('myCanvas').getContext('2d');                                ctx.shadowOffsetX = 2;                        ctx.shadowOffsetY = 2;                        ctx.shadowBlur = 2;                        ctx.shadowColor = "lime";                                ctx.font = "20px Times New Roman";                        ctx.fillStyle = "black";                        ctx.fillText("Sample String", 5, 30);                    }                }