Graphic Drawing Tool JavaScript, Canvas
👤 Sharing: AI
```javascript
<!DOCTYPE html>
<html>
<head>
<title>Simple Drawing Tool</title>
<style>
#canvas {
border: 1px solid black;
cursor: crosshair;
}
#toolbar {
margin-bottom: 10px;
}
</style>
</head>
<body>
<div id="toolbar">
<label for="colorPicker">Color:</label>
<input type="color" id="colorPicker" value="#000000">
<label for="lineWidth">Line Width:</label>
<input type="number" id="lineWidth" value="5" min="1" max="20">
<button id="clearButton">Clear</button>
<button id="downloadButton">Download</button>
</div>
<canvas id="canvas" width="800" height="600"></canvas>
<script>
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
const colorPicker = document.getElementById('colorPicker');
const lineWidthInput = document.getElementById('lineWidth');
const clearButton = document.getElementById('clearButton');
const downloadButton = document.getElementById('downloadButton');
let isDrawing = false;
let lastX = 0;
let lastY = 0;
let currentColor = colorPicker.value;
let currentLineWidth = lineWidthInput.value;
function startDrawing(e) {
isDrawing = true;
lastX = e.offsetX;
lastY = e.offsetY;
ctx.beginPath(); // Start a new path to prevent connecting to previous lines
ctx.moveTo(lastX, lastY);
}
function draw(e) {
if (!isDrawing) return; // Stop function from running when they are not moused down
ctx.strokeStyle = currentColor;
ctx.lineWidth = currentLineWidth;
ctx.lineCap = 'round'; // Makes the line ends rounded
ctx.lineJoin = 'round'; // Makes line joins rounded
ctx.lineTo(e.offsetX, e.offsetY);
ctx.stroke();
lastX = e.offsetX;
lastY = e.offsetY;
}
function stopDrawing() {
isDrawing = false;
}
function clearCanvas() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
}
function downloadCanvas() {
const image = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream");
const link = document.createElement('a');
link.download = "my_drawing.png";
link.href = image;
link.click();
}
canvas.addEventListener('mousedown', startDrawing);
canvas.addEventListener('mousemove', draw);
canvas.addEventListener('mouseup', stopDrawing);
canvas.addEventListener('mouseout', stopDrawing);
colorPicker.addEventListener('input', () => {
currentColor = colorPicker.value;
});
lineWidthInput.addEventListener('input', () => {
currentLineWidth = lineWidthInput.value;
});
clearButton.addEventListener('click', clearCanvas);
downloadButton.addEventListener('click', downloadCanvas);
</script>
</body>
</html>
```
👁️ Viewed: 9
Comments