show canvas on image when button is clicked

 <div class="info">

    <p id="points-info">No points yet</p>
</div>
<div class="output">
    <img id="image" src="https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Image_created_with_a_mobile_phone.png/1200px-Image_created_with_a_mobile_phone.png" width="500" height="500">
    <canvas id="canvas" width="500" height="500"></canvas>
    <p id="coordinates"></p>
</div>
<button id="show-canvas-btn">Show Canvas</button>

<style>
canvas {
    width: 500px;
    height: 500px;
    display: none;
    border: 3px solid #333;
    background-size: cover;
    cursor: crosshair;
}
</style>

<script>
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var pointsInfo = document.getElementById('points-info');

var img = new Image();
img.src = 'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Image_created_with_a_mobile_phone.png/1200px-Image_created_with_a_mobile_phone.png';

var points = [{x: 50, y: 50}, {x: 200, y: 50}, {x: 350, y: 50}, {x: 450, y: 250}, {x: 350, y: 450}, {x: 200, y: 450}, {x: 50, y: 450}, {x: 50, y: 250}];
var selectedPointIndex = null;

canvas.addEventListener('mousedown', function(event) {
    var x = event.offsetX;
    var y = event.offsetY;

    // Check if a point is clicked
    points.forEach(function(point, index) {
        if (Math.abs(x - point.x) < 5 && Math.abs(y - point.y) < 5) {
            selectedPointIndex = index;
        }
    });
});

canvas.addEventListener('mousemove', function(event) {
    if (selectedPointIndex === null) return;
    points[selectedPointIndex].x = event.offsetX;
    points[selectedPointIndex].y = event.offsetY;
    draw();
});

canvas.addEventListener('mouseup', function(event) {
    selectedPointIndex = null;
    printCoordinates();
});

function draw() {
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    ctx.drawImage(img, 0, 0, canvas.width, canvas.height);

    // Set the globalAlpha for transparency
    ctx.globalAlpha = 0.5;

    // Set the fillStyle to a low-opacity purple color
    ctx.fillStyle = "rgba(128, 0, 128, 0.1)"; // rgba for purple is (128, 0, 128)

    // Draw a rectangle covering the entire canvas
    ctx.fillRect(0, 0, canvas.width, canvas.height);

    // Reset the globalAlpha to 1 for full opacity
    ctx.globalAlpha = 1;

    // Draw the lines
    ctx.beginPath();
    ctx.moveTo(points[0].x, points[0].y);
    for (let i = 1; i < points.length; i++) {
        ctx.lineTo(points[i].x, points[i].y);
    }
    ctx.closePath();
    ctx.strokeStyle = 'red';
    ctx.stroke();

    // Draw the points
    points.forEach(function(point, index) {
        // Set the fillStyle to red for the points
        ctx.fillStyle = 'red';

        ctx.beginPath();
        ctx.arc(point.x, point.y, 5, 0, 2*Math.PI);
        ctx.fill();
        ctx.closePath();
    });
}

function printCoordinates() {
    var coordinatesElement = document.getElementById('coordinates');
    var coordinatesString = points.map(function(point) {
        return '(' + point.x + ', ' + point.y + ')';
    }).join(', ');
    coordinatesElement.textContent = coordinatesString;
    pointsInfo.textContent = points.length > 1 ? 'Points: ' + points.length : 'No points yet';
}

img.onload = function() {
    // Initial draw
    draw();
    printCoordinates();
};

document.getElementById('show-canvas-btn').addEventListener('click', function() {
    canvas.style.display = 'inline-block';
    document.getElementById('image').style.display = 'none';
});
</script>

Comments

Popular posts from this blog

WR3D wwe 2k19 MOD apk direct download link for Android

Download wwe2k17 wr3d

How to make resizeable window in pygame and make content adjustable according to window size