Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript html5画布是否支持带有alpha的十六进制颜色?_Javascript_Canvas_Hex - Fatal编程技术网

Javascript html5画布是否支持带有alpha的十六进制颜色?

Javascript html5画布是否支持带有alpha的十六进制颜色?,javascript,canvas,hex,Javascript,Canvas,Hex,我想知道是否可以用彩色画一个正方形,然后在里面画一个圆 这就像用黑色像素画一个正方形,然后用透明像素画一个圆形 据我所知,十六进制的基本颜色是红色、绿色、蓝色,但它看起来可以有类似于rgba的格式,但类似于argb的十六进制,00是完全透明的,FF是实心的 在png中,当您可以拥有透明像素时,alpha值也应该转换为十六进制值,作为合法和操纵性的值 带有8个字符的十六进制颜色看起来根本不是标准颜色(通常是6个字符),因为我今天第一次在android应用程序上看到它们,我想知道它们是否合法(需要更

我想知道是否可以用彩色画一个正方形,然后在里面画一个圆

这就像用黑色像素画一个正方形,然后用透明像素画一个圆形

据我所知,十六进制的基本颜色是红色、绿色、蓝色,但它看起来可以有类似于
rgba
的格式,但类似于
argb
的十六进制,
00
是完全透明的,
FF
是实心的

在png中,当您可以拥有透明像素时,alpha值也应该转换为十六进制值,作为合法和操纵性的值

带有8个字符的十六进制颜色看起来根本不是标准颜色(通常是6个字符),因为我今天第一次在android应用程序上看到它们,我想知道它们是否合法(需要更好的措辞-如果不清楚,请编辑)


这是合法的颜色吗?它是看不见的,但却是黑色的,正如我所理解的,它是纯黑的:
#FF000000

更新:现代浏览器现在支持8个字符的十六进制颜色,用于CSS和画布


画布和CSS一样,不支持8个字符的十六进制颜色。但是,您可以使用

工作示例:
var cvs=document.getElementById('canvas');
var ctx=cvs.getContext('2d');
ctx.fillStyle='#FF0000';
ctx.fillRect(0,0,100,100);
ctx.fillStyle='rgba(0,255,0,0.5)';
ctx.fillRect(50,50,100,100)

您提到,您知道十六进制颜色可以分解为r、g、b。您可以做的一件事是编写一个允许您使用8字符十六进制代码的函数:

function hex2rgba(hexa){
  var r = parseInt(hexa.slice(1,3), 16);
      g = parseInt(hexa.slice(3,5), 16);
      b = parseInt(hexa.slice(5,7), 16);
      a = parseInt(hexa.slice(7,9), 16)/255;
  return 'rgba('+r+', '+g+', '+b+', '+a+')';
}

ctx.fillStyle = hex2rgba('#aabbcc99');
//rgba(170, 187, 204, 0.59765625)
你可以用

ctx.fillStlye=“#rrggbbaa”

但它看起来像垃圾,我有一个问题,我称之为染色,如果我在一种颜色上涂上这种颜色,它实际上不会变成那种颜色,会有一种旧颜色的颜色,这真的很讨厌,因为我希望它完全变黑,但它不会。更糟糕的是,alpha越低(我认为alpha只会叠加几次) 你应该改用

ctx.globalAlpha = 0.aa; //aa is in base 10 here! (its a scale from 1.0 to 0.0)

谢谢,这总是让我明白。大多数最新浏览器中的CSS都支持8字符十六进制颜色,如:
#00000080