我的.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. 混合两种颜色(GD)
- 2. 颜色混合超过2种颜色
- 3. 如何在OpenGL中将两种颜色混合使用?
- 4. 创建一个显示两种组合颜色结果的颜色混合器
- 5. 将白色混合为一种颜色
- 6. 创建在Matlab热图/颜色表,通过混合两种颜色
- 7. 在PyQt中混合颜色?
- 8. 混合两种透明颜色时alpha值的公式
- 9. Opengl多种纹理混合颜色
- 10. 在php中获取混合颜色的百分比
- 11. 如何正确混合两种int颜色
- 12. 在Emacs * shell中获取256种颜色*
- 13. 中混合颜色编程
- 14. OpenGL混合单色颜色
- 15. 如何在一个超链接中获取两种颜色?
- 16. GD合并颜色混合
- 17. 在CSS中混合简单的颜色
- 18. 两种颜色值
- 19. sifr两种颜色
- 20. 如何在CSS中混合颜色?
- 21. 在多边形中混合颜色
- 22. 从ruby-ncurses中获取256种颜色
- 23. 获取两种颜色之间所有颜色的十六进制代码?
- 24. 获取像素颜色的阿尔法混合
- 25. UILabel TEXT的两种颜色
- 26. 查找其他两种颜色的算法 - 在颜色的颜色空间中
- 27. 混合透明颜色
- 28. WebGL颜色混合计算
- 29. 如何混合颜色
- 30. 混合颜色GD - PHP
这很好。我也不得不四舍五入到最接近的整数,否则在某些情况下会崩溃。这是我最终使用的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