当前位置: 首页 > 编程语言 > C#

使用Alpha混合白色背景将ARBG转换为RGB分享

时间:2023-04-11 00:15:23 C#

C#学习教程:使用Alpha混合白色背景将ARBG转换为RGB我可以使用以下方法转换它ConverttoARGBcolor:stringcolorString=0x78dce6b0;inthexColor=Convert.ToInt32(colorString??"0",16);颜色colorTL=Color.FromArgb(hexColor);现在我想将它转换为在HTML页面中使用,因此我需要转换为HTML值,如#cc3388。如果我使用ColorTranslator.ToHtml(colorTL)直接转换,我会丢失alpha混合值。假设背景始终为白色,如何通过考虑alpha值来转换它?HTML颜色没有alpha组件。不幸的是,不可能在不丢失alpha分量的情况下将ARGB转换为HTMLRGB。如果你想根据你的alpha值将你的颜色与白色混合......没有一个建议对我有用,但是然后使用http://en.wikipedia.org/wiki/Alpha_compositing来提出这个:varuseColor=颜色。FromArgb((int)((theStructureColor.R)*(theStructureColor.A/255.0)+255-theStructureColor.A),(int)((theStructureColor.G)*(theStructureColor.A/255.0)+255-theStructureColor.A),(int)((theStructureColor.B)*(theStructureColor.A/255.0)+255-theStructureColor.A));所以你真正要做的是将白色背景与半透明的前景色结合起来,并计算最终的显示颜色。这似乎是一个重复的问题RGB从2种颜色计算,一种透明,其中发布了合适的答案。要将它应用到你的情况,它看起来像下面这样(注意,我没有测试过这段代码):了解更多C#学习教程,希望大家多多关注——publicstaticColorFromTransparentWithWhiteBG(ColorA){//假设Alpha是0到254之间的一个值...varaFactor=(AA/254);varbgAFactor=(1-(AA/254));varbackground=Color.White;varR_c=(Int32)(Math.Ceiling((Double)AR*aFactor)+Math.Ceiling((Double)b??ackground.R*(1-bgAFactor)));varG_c=(Int32)(Math.Ceiling((Double)AG*aFactor)+Math.Ceiling((Double)b??ackground.G*(1-bgAFactor)));varB_c=(Int32)(Math.Ceiling((Double)AB*aFactor)+Math.Ceiling((Double)b??ackground.B*(1-bgAFactor)));返回Color.FromArgb(1,R_c,G_c,B_c);}网络收藏不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: