0
A
回答
-1
Color color1 = Color.FromArgb(UInt1);
Color color2 = Color.FromArgb(UInt2);
Color averageColor = Color.FromArgb(255,(color1.R + color2.R)/2,(color1.G + color2.G)/2,(color1.B + color2.B)/2);
这是假设你需要一个完全不透明的平均颜色。
1
从技术上讲,您可能在色彩映射设备上运行,这意味着您需要通过X11色彩管理来处理所有这些。您需要查询XColor
您的两个输入颜色,计算平均值,然后查找最接近的可表现的颜色:
// Query XColor for both input colors
XColor xcol1, xcol2, outcol;
xcol1.pixel = color1;
xcol2.pixel = color2;
XQueryColor(display, colormap, &xcol1);
XQueryColor(display, colormap, &xcol2);
// Average red/green/blue and look up nearest representable color
outcol.red = (xcol1.red + xcol2.red)/2;
outcol.green = (xcol1.green + xcol2.green)/2;
outcol.blue = (xcol1.blue + xcol2.blue)/2;
XAllocColor(display, colormap, &outcol);
// outcol.pixel is now the color to use
在有调色板的设备,还需要事后释放颜色等 - 这是一个烂摊子,基本上。
但是很可能你使用的是32位真彩色设备,这意味着整数只是r,g,b和a(不一定按顺序)的位域。你可以像这样计算它们的平均值:
UInt out_color = 0;
for (int i=0; i < 4; i++) {
// Extract channel i from both input colors
UInt in1 = (color1 >> (i*8)) & 0xff;
UInt in2 = (color2 >> (i*8)) & 0xff;
// Compute the average and or it into the output color
out_color |= ((in1 + in2)/2) << (i*8);
}
相关问题
- 1. Mac Screen的平均颜色
- 2. 颜色平均线ggplot
- 3. K平均聚类颜色不变
- 4. php平均颜色图像PNG格式
- 5. 从bmp获取平均颜色
- 6. řbeanplot改变颜色和平均线
- 7. 颜色[,]在C#中的平均
- 8. 恒星的平均颜色是多少?
- 9. 图像的RGB颜色的平均值
- 10. 在ImageJ /斐济平均颜色
- 11. Haskell opengl纹理只有平均颜色
- 12. 查找图像的平均颜色
- 13. 这种颜色在哪个X11颜色范围内
- 14. 将HTML HEX颜色或RGB元组转换为X11颜色
- 15. photoshop如何计算图像的“平均模糊”(平均颜色)?
- 16. 获取图片的平均颜色和使用java比较图片颜色
- 17. 基于整个色谱柱平均值的颜色细胞
- 18. 在多色背景上显示的img的平均颜色
- 19. dc.js颜色饼图颜色与颜色域的颜色
- 20. 颜色和颜色名称
- 21. 随机颜色从颜色
- 22. ASCII颜色为HEX颜色
- 23. 改变颜色的颜色
- 24. 为颜色添加颜色
- 25. geom_line中的平滑颜色
- 26. 展平PowerPoint重点颜色?
- 27. SDL网格颜色平滑
- 28. 双色颜色
- 29. 颜色色板
- 30. 如何在片段着色器中结合纹理颜色和均匀颜色?
-1。这不是Xlib代码,也不是针对任何X11窗口工具包的代码。 – 2010-11-14 00:35:19
你的问题中没有提到X11。 – Flipster 2010-11-14 01:15:32
这个问题被称为“平均颜色(X11颜色)”,并标记为“x11”和“xlib” - 这是非常明确的。 – 2010-11-14 03:35:47