我的.NET应用程序中有两种颜色是用户定义的。我想以某种方式获得这两种颜色之间的颜色。这是渐变中间的颜色。有什么办法可以做到这一点?在.NET中获取两种颜色的混合
3
A
回答
14
那么,简单方式是采取每个红,绿,蓝和阿尔法值的平均值:
Color c1 = ...;
Color c2 = ...;
Color midpoint = Color.FromArgb((c1.A + c2.A)/2,
(c1.R + c2.R)/2,
(c1.G + c2.G)/2,
(c1.B + c2.B)/2);
即使A,R,G和B的属性是字节,他们会在添加之前被提升为整数,所以不会出现溢出问题。除法的结果仍然在[0,255]范围内,FromArgb
取值为Int32
,但丢弃除最低8位之外的所有内容 - 正是我们想要的。
另一种方法是使用不同的颜色模型(例如HSV),但这会稍微复杂一些。对于渐变,这应该没问题。
6
按颜色你是指Color
struct的实例吗?
如果是这样,则依次取每个R
,G
和B
组件,并计算每个组件的平均值。合并结果以获得混合的颜色。
8
平均是最好的答案,但一个忠告:
颜色均值的一个问题是,除非它们是相同的专题系列,(高R,低G,低B),那么您会最终趋向灰色。
请注意,使用平均功能越多,结果将变得越灰。
2
CByte((CInt(byte1) + CInt(byte2)) \ 2)
相关问题
- 1. 将白色混合为一种颜色
- 2. 混合两种透明颜色时alpha值的公式
- 3. 在php中获取混合颜色的百分比
- 4. OpenGL混合单色颜色
- 5. 如何在一个超链接中获取两种颜色?
- 6. GD合并颜色混合
- 7. sifr两种颜色
- 8. 如何在CSS中混合颜色?
- 9. 从ruby-ncurses中获取256种颜色
- 10. 获取两种颜色之间所有颜色的十六进制代码?
- 11. 获取像素颜色的阿尔法混合
- 12. 查找其他两种颜色的算法 - 在颜色的颜色空间中
- 13. 如何混合颜色
- 14. 混合透明颜色
- 15. css:将某种颜色混合到现有背景颜色的类?
- 16. xcode中的动画颜色混合
- 17. 如何设置并从.NET组合框中获取颜色?
- 18. Alpha混合颜色在.NET Framework精简2.0
- 19. fancybox边框 - 两种颜色
- 20. 两种颜色背景
- 21. 从两种布局颜色
- 22. Mpandroidchart GradientDrawable中的两种颜色
- 23. UITextField中的两种不同颜色
- 24. 树荫和混合两种颜色与百分比,水平和垂直迅速
- 25. iOS在两种颜色之间的点上找到颜色
- 26. 获取图像前10种颜色
- 27. Java如何为每种颜色提供两种颜色值?
- 28. 可能将图像混合为一种颜色? (左,右,底)
- 29. 在R中,是否可以在一个绘图中叠加2种颜色来制作第3种颜色(例如,使用加法或减法颜色混合)
- 30. 注册后的点云颜色混合
这很好。我也不得不四舍五入到最接近的整数,否则在某些情况下会崩溃。这是我最终使用的VB代码: MyColor = Color.FromArgb(_ Decimal.Round(((CInt(Color1.A)+ CInt(Color2.A))/ 2)),_ Decimal.Round (((CInt(Color1.R)+ CInt(Color2.R))/ 2)),_(Decimal.Round((CInt(Color1.G)+ CInt(Color2.G))/ 2) Decimal.Round(((CInt(Color1.B)+ CInt(Color2.B))/ 2))__ ) – 2009-11-13 20:59:13
你不需要做所有的小数 - 只用\来代替/使用整数除法。你有Option Strict关闭吗?我不希望它另外编译。 – 2009-11-13 21:06:13