DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Webフォーム上でグラフィックを描画する方法(ファイルではなく、グラフィックオブジェクトを渡して描画)

環境/言語:[C#]
分類:[ASP.NET]

お世話様です。れいです。
以下の件、ご存知の方がおられましたら、レスいただけるとうれしいです。

<質問概要>
Webフォーム上でグラフィックを描画する方法(ファイルではなく、グラフィックオブジェクトを渡して描画)

<質問詳細>
下記のソースは、ASP.NET(C#)で記したもので、
Webフォーム上に存在する
System.Web.UI.WebControls.Image Image1
オブジェクトに対して、色を塗りつぶしたボックスと文字列を描画します。
最後の2行目で、グラフィックオブジェクトを
"graph.gif"
ファイルに保存し、このファイルを、
System.Web.UI.WebControls.Image Image1
オブジェクトに関連付けをすることにより、生成した画像を描画しています。

ここで、ファイルを生成しないで、グラフィックオブジェクトをそのまま渡して、
画像を描画したいのですが、そういった方法は存在するのでしょうか?

描画する画像は、オブジェクトとして既にメモリに存在しているため、
わざわざファイル保存して描画することを避けたいのです。


<ASP.NET(C#)ソース>
// ブラシとフォントの準備
SolidBrush Cyan = new SolidBrush(Color.Cyan);
SolidBrush black = new SolidBrush(Color.Black);
Font font = new Font("Times New Roman", 26);

// 400x200ピクセルの仮想画面を準備
Bitmap bmp = new Bitmap(400, 200);
Graphics g = Graphics.FromImage(bmp); //グラフィックオブジェクトを作成

// 仮想画面へ描画
g.FillRectangle(Cyan, 0, 0, 400, 200); //ボックスを描画
g.DrawString("test", font, black, 50, 75); //"test"文字列を描画

// GIF形式でファイルに保存
bmp.Save(Server.MapPath("graph.gif"), ImageFormat.Gif);
Image1.ImageUrl = "graph.gif";
こんばんは、れいさん。ピラルクです。

> ここで、ファイルを生成しないで、グラフィックオブジェクトをそのまま渡して、
> 画像を描画したいのですが、そういった方法は存在するのでしょうか?

それだとクライアントはブラウザ(HTTPプロトコル)だけでは無理と
いうことになります。クライアント側にもに.NET Frameworkがあって
グラフィックオブジェクトをシリアライズして送って受け取れるなら
再生できるでしょう。しかし、そんな回りくどいことするより、サーバ
で画像を吐いて読ませるほうが、ずっとノーマルでスマートだと思いますが。

DOBON.NET | プログラミング道 | プログラミング掲示板