Go 从float64获取Alpha值
我正在尝试将0到1的值转换为Alpha值,以便在color.RGBA中使用 e、 g.color.RGBA{255,255,255} 现在我需要根据0到1修改Alpha的值 例如: ... alpha:=p.Tween.Value//返回值,例如0.3浮点64 myColor:=HexToColorE53935 myColor.A=255-uint8alpha ... 更新呼叫 myColor.A=255-uint8alpha 这是我将十六进制字符串转换为RGBA的函数。但我在游戏中创建动画,我需要逐渐淡出颜色Alpha值 正如你在下面看到的,我的alpha值是固定的 //六色染料53935 func HexToColorhex字符串c color.RGBA{ c、 A=0xff errInvalidFormat:=color.RGBA{255,255,255} 如果十六进制[0]!={ 返回errInvalidFormat } hexToByte:=funcb字节{ 开关{Go 从float64获取Alpha值,go,colors,byte,Go,Colors,Byte,我正在尝试将0到1的值转换为Alpha值,以便在color.RGBA中使用 e、 g.color.RGBA{255,255,255} 现在我需要根据0到1修改Alpha的值 例如: ... alpha:=p.Tween.Value//返回值,例如0.3浮点64 myColor:=HexToColorE53935 myColor.A=255-uint8alpha ... 更新呼叫 myColor.A=255-uint8alpha 这是我将十六进制字符串转换为RGBA的函数。但我在游戏中创建动画,我
案例b>='0'&&b='a'&&b='a'&&b将浮点数转换为整数将保留其ingeger部分。这意味着
uint8(0.1) => 0
uint8(0.9) => 0
uint8(1.0) => 1
在转换之前,您应该将0..1范围缩放到uint范围。因此,您可以这样转换它:
func alpha(f float64) uint8 {
if f >= 1 {
return 255
}
return uint8(f * 256)
}
将浮点数转换为整数就是保留其ingeger部分
uint8(0.1) => 0
uint8(0.9) => 0
uint8(1.0) => 1
在转换之前,您应该将0..1范围缩放到uint范围。因此,您可以这样转换它:
func alpha(f float64) uint8 {
if f >= 1 {
return 255
}
return uint8(f * 256)
}
感谢您提供有关缩放的提示。更改color.RGBA的Alpha值是否与此颜色类似是一个好主意。A=230或者是否有更好的函数返回HexToColorE53935.WithAlpha0。1@STEEL我会把alpha值传递给HexToColor,然后用它来填充c.A.谢谢你关于刻度的提示。改变Alph值也是个好主意吗color.RGBA的值与此color.a=230类似,或者是否有更好的函数返回HexToColorE53935.WithAlpha0。1@STEEL我会把alpha值传递给HexToColor,然后用它来填充c.A。