【发布时间】:2023-03-25 17:06:01
【问题描述】:
我正在开发一个 ASP.Net Web 处理程序,它返回生成内存中的图像System.Windows.Forms.Control,然后使用方法DrawToBitmap() 将呈现的控件导出为压缩为 PNG 的位图。除了颜色分配的问题外,这些课程现在已经完全正常工作了。例如,这是由 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));
【问题讨论】:
-
你真的非常想要那种颜色...... ;-) 或者你的意思是“如何获得......”?
-
我只想设置一种颜色并实际获取该颜色。这些只是一个例子,我当然不想在我的应用程序中使用圣诞树;)
-
如果您将位图 (bmp) 直接保存到文件中会怎样?
-
您没有向我们展示足够的代码。
-
Rodrigo,您可以通过将函数缩减到显示问题的最低限度来学到很多东西。您可以从头开始替换它,也许从绘制一个矩形开始。或者,只要问题仍然存在,您就可以剪掉大块。如果您通过此过程找出问题所在,请回来告诉我们,否则请发布您剩下的任何内容。
标签: c# bitmap gdi system.drawing color-mapping