通过与白色背景进行 alpha 混合将 ARBG 转换为 RGB

ace*_*ace 3 c# rgb alphablending argb

我有一个颜色十六进制字符串存储在数据库中,例如0x78dce6b0;我可以使用以下方法将其转换为 ARGB 颜色:

string colorString=0x78dce6b0;
int hexColor = Convert.ToInt32(colorString ?? "0", 16);
Color colorTL = Color.FromArgb(hexColor);
Run Code Online (Sandbox Code Playgroud)

现在我想将其转换为在 HTML 页面中使用,因此我需要转换为 HTML 值,例如#cc3388. 如果我直接使用 进行转换ColorTranslator.ToHtml(colorTL),我会丢失 alpha 混合值。假设背景始终为白色,如何通过考虑 alpha 值来转换它?

Bri*_*ter 6

HTML 颜色没有Alpha组件。

不幸的是,不可能在不丢失组件的情况下转换ARGB为 HTML 。RGBAlpha

如果您想根据您的 alpha 值将颜色与白色混合...

  • 将每个十六进制分量(A、R、G、B)转换为 0 到 255 之间的值,其中 FF 等于 255,00 等于 0。
  • 我们将这些 0-255 值命名为 A、R、G、B
  • 我们假设 Alpha 值为 255 表示“完全透明”,Alpha 值为 0 表示“完全不透明”
  • New_R = CInt((255 - R) * (A / 255.0) + R)
  • New_G = CInt((255 - G) * (A / 255.0) + G)
  • New_B = CInt((255 - G) * (A / 255.0) + B)
  • 最终的 HTML 颜色字符串将为: "#" & cstr(New_R) & cstr(New_G) & cstr(New_B)