|
1 |
| -var img = new Image(); |
| 1 | +const img = new Image(); |
2 | 2 | img.crossOrigin = 'anonymous';
|
3 | 3 | img.src = './assets/rhino.jpg';
|
4 |
| -var canvas = document.getElementById('canvas'); |
5 |
| -var ctx = canvas.getContext('2d'); |
6 |
| -img.onload = function() { |
| 4 | +const canvas = document.getElementById('canvas'); |
| 5 | +const ctx = canvas.getContext('2d'); |
| 6 | +img.addEventListener('load', () => { |
7 | 7 | ctx.drawImage(img, 0, 0);
|
8 | 8 | img.style.display = 'none';
|
9 |
| -}; |
10 |
| -var hoveredColor = document.getElementById('hovered-color'); |
11 |
| -var selectedColor = document.getElementById('selected-color'); |
| 9 | +}); |
| 10 | +const hoveredColor = document.getElementById('hovered-color'); |
| 11 | +const selectedColor = document.getElementById('selected-color'); |
12 | 12 |
|
13 | 13 |
|
14 | 14 | function pick(event, destination) {
|
15 |
| - var x = event.layerX; |
16 |
| - var y = event.layerY; |
17 |
| - var pixel = ctx.getImageData(x, y, 1, 1); |
18 |
| - var data = pixel.data; |
| 15 | + const bounding = canvas.getBoundingClientRect(); |
| 16 | + const x = event.clientX - bounding.left; |
| 17 | + const y = event.clientY - bounding.top; |
| 18 | + const pixel = ctx.getImageData(x, y, 1, 1); |
| 19 | + const data = pixel.data; |
19 | 20 |
|
20 |
| - const rgba = `rgba(${data[0]}, ${data[1]}, ${data[2]}, ${data[3] / 255})`; |
21 |
| - destination.style.background = rgba; |
22 |
| - destination.textContent = rgba; |
| 21 | + const rgba = `rgba(${data[0]}, ${data[1]}, ${data[2]}, ${data[3] / 255})`; |
| 22 | + destination.style.background = rgba; |
| 23 | + destination.textContent = rgba; |
23 | 24 |
|
24 |
| - return rgba; |
| 25 | + return rgba; |
25 | 26 | }
|
26 | 27 |
|
27 |
| -canvas.addEventListener('mousemove', function(event) { |
28 |
| - pick(event, hoveredColor); |
29 |
| -}); |
30 |
| -canvas.addEventListener('click', function(event) { |
31 |
| - pick(event, selectedColor); |
32 |
| -}); |
| 28 | +canvas.addEventListener('mousemove', event => pick(event, hoveredColor)); |
| 29 | +canvas.addEventListener('click', event => pick(event, selectedColor)); |
0 commit comments