Определение площади нарисованного Canvas пространства
Всем привет! Если кто в курсе, подскажите пожалуйста, как определить занятую площадь от всего пространства canvas? Например если у меня три квадрата разбросаны по области, можно одного цвета. Можно в процентах от общей площади canvas, можно просто в пикселях, может быть по области заливки, или же конкретного цвета? Как нибудь нужно определить использованное пространство...
|
Вручную посчитать соотношение пикселей через .getImageData() .)
|
Цитата:
|
Цитата:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script type="text/javascript"> window.onload = function(){ var canvas = document.createElement('canvas'); canvas.width = window.innerWidth - 20; canvas.height = window.innerHeight - 20; var div = document.createElement('div'); var ctx = canvas.getContext("2d"), length = canvas.width * canvas.height, drawing = false, x, y; function showPercentage(){ var data = new Int32Array( ctx.getImageData(0,0,canvas.width,canvas.height).data.buffer ); for(var i = length, j = 0; i; i--) if( data[i] !== 0) j++; div.innerHTML = 'Закрашено ' + (j / length * 100).toFixed(2) + '% (' + j + 'px)'; } canvas.onmousedown = function(e){ ctx.beginPath(); ctx.strokeStyle = '#000000'; ctx.lineWidth = 1; ctx.moveTo(e.clientX, e.clientY); drawing = true; } canvas.onmouseup = function(e){ if (drawing) { ctx.lineTo(e.clientX, e.clientY); showPercentage(); drawing = false; } } canvas.onmousemove = function(e){ if (drawing) { ctx.lineTo(x = e.clientX, y = e.clientY); ctx.stroke(); ctx.moveTo(x, y); } } document.body.appendChild(canvas); document.body.appendChild(div); } </script> <style> *{margin:0;padding:0} html,body{ width:100%; height:100%; } canvas { cursor:crosshair; } div { position: absolute; top: 0px; left: 0px; cursor: default; font-size:18pt; } </style> </head> <body> </body> </html> |
спасибо Aetae! буду пользоваться, думаю вопрос исчерпан, дополнительное спасибо за оперативность и наглядный пример!
|
Научное название - гистограмма.
|
Часовой пояс GMT +3, время: 22:17. |