我正在开发一个 ASP.Net Web 处理程序,该处理程序返回在内存中制作的图像System.Windows.Forms.Control
,然后使用方法将呈现的控件导出为压缩为 PNG 的位图DrawToBitmap()
。除了颜色分配的问题外,这些课程现在已经完全正常工作了。例如,这是由 Web 处理程序生成的 Gauge。
分配给仪表内部的颜色是红色 ( #FF0000
)、黄色 ( #FFFF00
) 和绿色 ( #00FF00
),但我只得到每种颜色的单调版本(#CB100F
红色、#CCB70D
黄色和#04D50D
绿色)。
背景是包含颜色渐变的 bmp 文件。无论背景是作为样本的渐变、黑色画布、白色画布、透明画布,即使没有设置背景,也会发生颜色丢失。
- 黑色背景
- 有透明背景
- 有白色背景
- 没有背景设置
- 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));