メソッドを使用して、インメモリを作成する画像を返しSystem.Windows.Forms.Control
、レンダリングされたコントロールを PNG に圧縮されたビットマップとしてエクスポートする ASP.Net Web ハンドラーを開発しています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));