Go 从float64获取Alpha值

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的函数。但我在游戏中创建动画,我

我正在尝试将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字节{ 开关{
案例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。