Я пытаюсь дать пользователям указать область, нарисуя на ней инструмент «paint», который рисует полупрозрачные линии на холсте. Его цель - указать «маску» для изображения, которое будет показано ниже на холсте.Рисование полупрозрачных линий движения мыши в холсте HTML5
Это то, что я пытался до сих пор:
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var canvasPos = canvas.getBoundingClientRect();
var dragging = false;
drawImage();
$(canvas).mousedown(mouseDown);
$(canvas).mouseup(mouseUp);
$(canvas).mousemove(mouseMove);
function drawImage() {
var img = new Image();
img.src = 'http://img2.timeinc.net/health/img/web/2013/03/slides/cat-allergies-400x400.jpg';
img.onload = function() {
ctx.drawImage(img, 0, 0);
};
}
function mouseDown(e) {
var pos = getCursorPosition(e);
dragging = true;
ctx.strokeStyle = 'rgba(0, 100, 0, 0.25)';
ctx.lineCap = 'round';
ctx.lineJoin = 'round';
ctx.lineWidth = 15;
ctx.beginPath();
ctx.moveTo(pos.x, pos.y);
}
function mouseUp(e) {
dragging = false;
}
function mouseMove(e) {
var pos, i;
if (!dragging) {
return;
}
pos = getCursorPosition(e);
ctx.lineTo(pos.x, pos.y);
ctx.stroke();
}
function getCursorPosition(e) {
return {
x: e.clientX - canvasPos.left,
y: e.clientY - canvasPos.top
};
}
- Ссылка на jsfiddle вышеуказанного кода: http://jsfiddle.net/s34PL/2/
Проблема с этим примером кода является то, что последующее пиксели, которые нарисованы, делают прозрачность становится все менее заметной. Я думаю, что это потому, что линия имеет ширину 15 пикселей (но я хочу, чтобы это было широко, хотя).
Как я могу решить эту проблему?
Спасибо!
Kangax [написал удивительное сообщение в блоге по этой теме] (http://perfectionkills.com/exploring-canvas-drawing-techniques/) недавно. – Pointy
@Pointy, я действительно прочитал его, прежде чем публиковать этот вопрос. Действительно, серьезная статья, многому научилась - но я не видел решения для моей конкретной проблемы? – bartzy