我正在开发一个ASP.NET Web处理程序,该Web处理程序返回制作内存的图像 System.Windows.Forms.Control 然后使用该方法将渲染的控制作为压缩到PNG的位图 DrawToBitmap(). 。除了颜色分配问题外,这些课程现在已经完全工作了。例如,这是由Web处理程序生成的量规。

The gauge

分配给仪表内部部分的颜色为红色(#FF0000), 黄色的 (#FFFF00)和绿色(#00FF00)但是我只得到每种颜色的愚蠢版本(#CB100F 对于红色, #CCB70D 对于黄色和 #04D50D 对于绿色)。

背景是包含颜色梯度的BMP文件。颜色损失是否是背景作为样品,黑色画布,白色画布,透明画布的梯度,即使没有背景集。

  • 与黑色背景

With black background

  • 具有透明背景

With a transparent background

  • 具有白色背景

With a white background

  • 没有背景集

Without a background set

  • 使用格式的像素格式32bppargb

With pixelformat Format32bppArgb

我尝试了多个位图颜色深处,输出格式,压缩级别等。但是它们似乎都没有用。有任何想法吗?

这是源代码的摘录:

Bitmap bmp = new Bitmap(w, h, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
Image bgimage = (Image) HttpContext.GetGlobalResourceObject("GraphicResources", "GaugeBackgroundImage");
Canvas control_canvas = new Canvas(); //inherits from Control
....
//the routine that makes the gauge
....
control_canvas.DrawToBitmap(bmp, new Rectangle(0, 0, w, h));
有帮助吗?

解决方案 4

画布是由第三方提供的课程。我们在他们的软件包中找到了一个错误,他们发布了一个新版本,问题终于解决了。无论如何,感谢您的时间!

其他提示

当您绘制颜色时,请检查以确保正确设置Alpha通道。如果您有一些alpha,它将与黑暗的背景融为一体,并为您提供较深的颜色。

您只使用PNG尝试吗?很久以前,我在浏览器中使用了PNG(或JPEGS?)的问题,但是IIRC GIF消除了问题:

请注意,我并不是说GIF会解决您的问题,但它可能会告诉您PNG写入/阅读是否是问题。尝试一下,尝试BMP,尝试一些东西。不要相信PNG。您可以尝试将RGB值倾倒到日志文件(或将磁盘作为RAW并导入Photoshop),并在写出位图之前查看数字是什么。 (采用 ;有有关将字节输入和从位图中获取字节的代码教程)。

我只是意识到您在该三角形指针上有非常明亮的黄色零件,因此背景图像可能存在问题。您是用原始绘制那些弧还是加载位图?假设您使用的是红色/黄色/绿仪表部分的图像,您可能会遇到伽马问题,颜色空间问题等。取决于输入格式。如果您使用的是图像,请尝试在代码中绘制这些形状。无论代码如何使黄色三角形获得鲜艳的色彩,因此请使用相同的图像格式或刷子或任何使黄色三角形工作的东西。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top