简易绘图板
源码如下:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<style type="text/css">
/* general styles */
* {
margin: 0;
padding: 0;
}
body {
background-color: #bababa;
color: #fff;
font: 14px/1.3 Arial,sans-serif;
}
footer {
background-color: #212121;
bottom: 0;
box-shadow: 0 -1px 2px #111111;
display: block;
height: 70px;
left: 0;
position: fixed;
width: 100%;
z-index: 100;
}
footer h2 {
font-size: 22px;
font-weight: normal;
left: 50%;
margin-left: -400px;
padding: 22px 0;
position: absolute;
width: 540px;
}
footer a.stuts, a.stuts:visited {
border: none;
text-decoration: none;
color: #fcfcfc;
font-size: 14px;
left: 50%;
line-height: 31px;
margin: 23px 0 0 110px;
position: absolute;
top: 0;
}
footer .stuts span {
font-size: 22px;
font-weight: bold;
margin-left: 5px;
}
.container {
color: #000;
margin: 20px auto;
position: relative;
width: 730px;
}
/* custom styles */
.column1 {
float: left;
width: 500px;
}
.column2 {
float: left;
padding-left: 20px;
width: 170px;
}
#panel {
border: 1px #000 solid;
box-shadow: 4px 6px 6px #444444;
cursor: crosshair;
}
#color {
border: 1px #000 solid;
box-shadow: 0px 4px 6px #444444;
cursor: crosshair;
}
.column2 > div {
margin-bottom: 10px;
}
#swImage {
border: 1px #000 solid;
box-shadow: 2px 3px 3px #444444;
cursor: pointer;
height: 25px;
line-height: 25px;
border-radius: 3px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
}
#swImage:hover {
margin-left: 2px;
}
#preview, #pick {
border: 1px #000 solid;
box-shadow: 2px 3px 3px #444444;
height: 40px;
width: 80px;
border-radius: 3px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
}
.column2 input[type=text] {
float: right;
width: 110px;
}
</style>
<script src="../Scripts/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
var canvas;
var contextCanvas;
var canvasColor;
var contextColor;
var pickColorR = 0;
var pickColorG = 0;
var pickColorB = 0;
var mouseDown = false;
$(function () {
debugger;
canvasColor = document.getElementById("color");
contextColor = canvasColor.getContext("2d");
// 绘制颜色板
drawGradients();
$("#color").mousemove(function (e) {
var canvasOffset = $(canvasColor).offset();
var canvasX = Math.floor(e.pageX - canvasOffset.left);
var canvasY = Math.floor(e.pageY - canvasOffset.top);
var imageData = contextColor.getImageData(canvasX, canvasY, 1, 1);
var pixel = imageData.data;
var pixelColor = "rgba(" + pixel[0] + "," + pixel[1] + "," + pixel[2] + "," + pixel[3] + ")";
$("#preview").css("backgroundColor", pixelColor);
mouseDown = false;
});
// 选中颜色
$("#color").click(function (e) {
var canvasOffset = $(canvasColor).offset();
var canvasX = Math.floor(e.pageX - canvasOffset.left);
var canvasY = Math.floor(e.pageY - canvasOffset.top);
var imageData = contextColor.getImageData(canvasX, canvasY, 1, 1);
var pixel = imageData.data;
var pixelColor = "rgba(" + pixel[0] + "," + pixel[1] + "," + pixel[2] + "," + pixel[3] + ")";
$("#pick").css("backgroundColor", pixelColor);
pickColorR = pixel[0];
pickColorG = pixel[1];
pickColorB = pixel[2];
mouseDown = false;
});
canvas = document.getElementById("panel");
contextCanvas = canvas.getContext("2d");
$("#panel").mousedown(function (e) {
contextCanvas.beginPath();
var canvasOffset = $(canvas).offset();
contextCanvas.moveTo(e.pageX - canvasOffset.left, e.pageY - canvasOffset.top);
mouseDown = true;
});
$("#panel").mouseup(function (e) {
if (mouseDown) {
$("#panel").mousemove(function (e) {
var canvasOffset = $(canvas).offset();
if (mouseDown) {
contextCanvas.strokeStyle = 'rgba(' + pickColorR + ',' + pickColorG + ',' + pickColorB + ',1)';
contextCanvas.lineWidth = 4;
contextCanvas.lineCap = "round";
contextCanvas.lineJoin = "round";
contextCanvas.lineTo(e.pageX - canvasOffset.left, e.pageY - canvasOffset.top);
contextCanvas.stroke();
}
});
mouseDown = false;
}
});
})
$("#panel").mousemove(function (e) {
if (mouseDown) {
var canvasOffset = $(canvas).offset();
contextCanvas.strokeStyle = 'rgba(' + pickColorR + ',' + pickColorG + ',' + pickColorB + ',1)';
contextCanvas.lineWidth = 4;
contextCanvas.lineCap = "round";
contextCanvas.lineJoin = "round";
contextCanvas.lineTo(e.pageX - canvasOffset.left, e.pageY - canvasOffset.top);
contextCanvas.stroke();
}
});
function drawGradients() {
var grad = contextColor.createLinearGradient(20, 0, canvasColor.width - 20, 0);
grad.addColorStop(0, "red");
grad.addColorStop(1 / 6, "orange");
grad.addColorStop(2 / 6, "yellow");
grad.addColorStop(3 / 6, "green");
grad.addColorStop(4 / 6, "aqua");
grad.addColorStop(5 / 6, "blue");
grad.addColorStop(1, "purple");
contextColor.fillStyle = grad;
contextColor.fillRect(0, 0, canvasColor.width, canvasColor.height);
}
</script>
</head>
<body>
<div class="container">
<div class="column1">
<canvas id="color" width="500" height="128"></canvas>
<canvas id="panel" width="500" height="333"></canvas>
</div>
<div class="column2">
<div>Preview:</div>
<div id="preview"></div>
<div>Selected:</div>
<div id="pick"></div>
<div>Color:</div>
<div>
RGB:
<input type="text" id="rgbVal" />
</div>
<hr />
</div>
<div style="clear: both;"></div>
</div>
<footer>
<h2>HTML5 canvas - Creating own Paint program</h2>
</footer>
</body>
</html>

Chrome下有问题!

浙公网安备 33010602011771号