c# - 使用白色背景进行alpha混合将ARBG转换为RGB

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

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


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

最佳答案

HTML颜色没有Alpha组件。

不幸的是,将ARGB转换为HTML RGB而不丢失Alpha组件是不可能的。

如果要根据您的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)

本文翻译自 https://stackoverflow.com/questions/6195609/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 c# rgb alphablending argb


相关文章:

javascript - 如何在JavaScript中将字符串中出现的不确定数量的rgb转换为十六进制?

android - 蜂窝上的画布/位图和Alpha混合性能问题(TF101)

python - pylab中的变量alpha混合

c# - 动态设置网格列/行宽/高度

c# - 文件无法使用c#ASP.NET保存在文件夹内

java - 仅使用一种颜色生成渐变

c++ - 在3D世界中Z阶与Alpha混合

c# - 带有孙子代的.NET DDD域模式

c# - 如何获取一个IntPtr来访问MemoryMappedFile的视图?

android - 如何从图像中获取RGB矩阵?