"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como obter a cor do pixel de uma tela no Mousemove?

Como obter a cor do pixel de uma tela no Mousemove?

Publicado em 2024-11-02
Navegar:502

How to Get the Pixel Color from a Canvas on Mousemove?

Obter a cor do pixel do Canvas no Mousemove

Visão geral

Esta postagem explora como você pode recuperar os valores RGB do pixel sob o cursor do mouse enquanto movendo-se sobre um elemento de tela. Forneceremos uma abordagem abrangente com um exemplo independente.

Solução

Para conseguir isso, primeiro crie uma tela com as dimensões desejadas:

Preencha a tela com elementos como quadrados:

const example = document.getElementById('example');
const ctx = example.getContext('2d');

ctx.fillStyle = randomColor();
ctx.fillRect(0, 0, 50, 50);

ctx.fillStyle = randomColor();
ctx.fillRect(55, 0, 50, 50);

ctx.fillStyle = randomColor();
ctx.fillRect(110, 0, 50, 50);

Finalmente, adicione o manipulador de eventos mousemove que captura os valores de pixel na posição do cursor:

$('#example').mousemove(function(e) {
  // Calculate the position relative to the canvas
  const pos = findPos(this);
  const x = e.pageX - pos.x;
  const y = e.pageY - pos.y;
  const coord = `x=${x}, y=${y}`;

  // Get the pixel value
  const c = this.getContext('2d');
  const p = c.getImageData(x, y, 1, 1).data;

  // Convert to hex format
  const hex = "#"   ("000000"   rgbToHex(p[0], p[1], p[2])).slice(-6);

  // Display the color information
  $('#status').html(coord   "
" hex); });

Funções utilitárias

Este código depende de funções de suporte para encontrar a posição do elemento e converter valores RGB em hexadecimais. Defina essas funções da seguinte forma:

function findPos(obj) {
  let curleft = 0, curtop = 0;
  if (obj.offsetParent) {
    do {
      curleft  = obj.offsetLeft;
      curtop  = obj.offsetTop;
    } while (obj = obj.offsetParent);
    return { x: curleft, y: curtop };
  }
  return undefined;
}

function rgbToHex(r, g, b) {
  if (r > 255 || g > 255 || b > 255) throw "Invalid color component";

  return ((r << 16) | (g << 8) | b).toString(16);
}

function randomInt(max) {
  return Math.floor(Math.random() * max);
}

function randomColor() {
  return `rgb(${randomInt(256)}, ${randomInt(256)}, ${randomInt(256)})`;
}

Exemplo ao vivo

Visite o link a seguir para ver o exemplo completo em ação:

https://bl.ocks.org/wayneburkett/ca41a5245a9f48766b7bc881448f9203

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3