将#HEX转换为0xff-hex



为什么0xff0000ff是红色的,而#0000FF为蓝色?以及如何将#0000FF转换为0x,因此它可以正常工作?我试图在开始时添加0xff,但它导致了意外的(由我(行为

我正在尝试实现此算法http://jsfiddle.net/greggman/wpfd8he1/

function getPixel(pixelData, x, y) {
  if (x < 0 || y < 0 || x >= pixelData.width || y >= pixelData.height) {
    return -1;  // impossible color
  } else {
    return pixelData.data[y * pixelData.width + x];
  }
}
function floodFill(ctx, x, y, fillColor) {
  // read the pixels in the canvas
  const imageData = ctx.getImageData(0, 0, ctx.canvas.width, ctx.canvas.height);
  // make a Uint32Array view on the pixels so we can manipulate pixels
  // one 32bit value at a time instead of as 4 bytes per pixel
  const pixelData = {
    width: imageData.width,
    height: imageData.height,
    data: new Uint32Array(imageData.data.buffer),
  };
  // get the color we're filling
  const targetColor = getPixel(pixelData, x, y);
  // check we are actually filling a different color
  if (targetColor !== fillColor) {
    const pixelsToCheck = [x, y];
    while (pixelsToCheck.length > 0) {
      const y = pixelsToCheck.pop();
      const x = pixelsToCheck.pop();
      const currentColor = getPixel(pixelData, x, y);
      if (currentColor === targetColor) {
        pixelData.data[y * pixelData.width + x] = fillColor;
        pixelsToCheck.push(x + 1, y);
        pixelsToCheck.push(x - 1, y);
        pixelsToCheck.push(x, y + 1);
        pixelsToCheck.push(x, y - 1);
      }
    }
    // put the data back
    ctx.putImageData(imageData, 0, 0);
  }
}

十六进制颜色遵循格式[0x] [red] [green] [blue] [transparency]。
相反,十六进制代码'遵循格式[#] [red] [green] [blue](未列出透明度值(。

0F之间分配了每种颜色2个单位。单位是小写还是大写都没关系。

0xFF0000ffff(固体(透明度等于十六进制代码#FF0000。打破这个问题,我们有[FF(RED(] [00(绿色(] [00(蓝色(] - 固体红色。

为了将任何十六进制代码掩盖到十六进制符号中,您只需要 prepend 0x附加透明度值即可。假设您要转换的颜色是不透明的,您只需要附加ff

例如,要将#0000ff(蓝色(转换为十六进制,您预处了0x并附加ff,给您0x0000ffff

0x十六进制颜色从Web十六进制代码反转。#RRGGBBAA对于十六进制代码将是0xAABBGGRR,其中AA为Alpha,BB为蓝色,GG是绿色的,RR是红色。

相关内容

  • 没有找到相关文章