この記事では、で紹介していきます。コードを使用して、MS Excel で生成されたチャートと同じように、Net でチャートを描画する方法。 DataGrid のようなテーブルを描画することもできます。
存在する。 Microsoft は、描画の基本機能を備えた描画クラス (System.Drawing.Imaging) を提供しています。たとえば、直線、ポリライン、長方形、多角形、楕円形、扇形、曲線など、一般的なグラフィックスをコードを通じて直接描画できます。次に、いくつかの描画関数を紹介します。
ビットマップ bMap=new Bitmap(500,500) //画像サイズを定義します。
bMap.Save(Stream,ImageCodecInfo) //指定された出力ストリームに画像を保存します。
Graphics gph //GDI 描画オブジェクトを定義または作成します。
PointF cPt //2 次元平面内の x、y 座標を定義します。
DrawString(string,Font,Brush,PonitF) //指定された Brush オブジェクトと Font オブジェクトを使用して、指定された四角形または点に指定された文字列を描画します。
DrawLine(Pen,Ponit,Ponit) //指定されたペン (Pen) オブジェクトを使用して、指定された 2 点間に直線を描きます。
DrawPolygon(Pen,Ponit[]) //指定されたペン (Pen) オブジェクトを使用して、三角形、四角形などの指定された多角形を描画します。
FillPolygon(Brush,Ponit[]) //指定されたポリゴンを指定されたブラシ (Brush) オブジェクトで塗りつぶします。
DrawEllipse(Pen,x,y,Width,Height) //指定されたペンを使用して、境界線で定義された楕円を描画します。
FillEllipse(Brush,x,y,Width,Height) //指定されたブラシを使用して、境界線で定義された楕円を塗りつぶします。
DrawRectangle(Pen,x,y,Width,Height) //指定されたペンを使用して、指定された座標点、幅、高さの四角形を描画します。
DrawPie(Pen,x,y,Width,Height,startAngle,cookieAngle) //指定されたペンを使用して、指定された座標点、幅、高さ、および 2 本の光線で構成されるセクターを描画します。
OK、パラメータは省略されました。実際に使ってみると、より深い体験ができると思います。最後に、これらの描画機能(折れ線グラフ)の使い方を簡単な例で見てみましょう。
上記の折れ線グラフを描画するコードは次のとおりです。
//データの初期化
string[] month=new string[12]{"1 月"、"2 月"、"3 月"、"4 月"、"5 月"、"6 月"、"7 月"、"8 月"、"9 月"、"10 月" ,"11月","12月"};
float[] d=新しい float[12]{20.5F,60,10.8F,15.6F,30,70.9F,50.3F,30.7F,70,50.4F,30.8F,20};
//図面の初期化
ビットマップ bMap=新しいビットマップ(500,500);
グラフィックス gph=Graphics.FromImage(bMap);
gph.Clear(Color.White);
PointF cPt=new PointF(40,420);//中心点
PointF[] xPt=新しい PointF[3]{新しい PointF(cPt.Y+15,cPt.Y),新しい PointF(cPt.Y,cPt.Y-8),新しい PointF(cPt.Y,cPt.Y+ 8 )};//X 軸の三角形
PointF[] yPt=新しい PointF[3]{新しい PointF(cPt.X,cPt.X-15),新しい PointF(cPt.X-8,cPt.X),新しい PointF(cPt.X+8,cPt. X)};//Y 軸の三角形
gph.DrawString("工場におけるある製品の月次生産量グラフ", new Font("宋体", 14), Brushes.Black, new PointF(cPt.X+60, cPt.X));//Chartタイトル
//X軸を描く
gph.DrawLine(Pens.Black, cPt.X,cPt.Y ,cPt.Y,cPt.Y);
gph.DrawPolygon(Pens.Black,xPt);
gph.FillPolygon(new SolidBrush(Color.Black),xPt);
gph.DrawString("Month", new Font("宋体", 12), Brushes.Black, new PointF(cPt.Y+10, cPt.Y+10));
//Y軸を描く
gph.DrawLine(Pens.Black, cPt.X,cPt.Y,cPt.X,cPt.X);
gph.DrawPolygon(Pens.Black,yPt);
gph.FillPolygon(new SolidBrush(Color.Black),yPt);
gph.DrawString("Unit (10,000)", new Font("宋体", 12), Brushes.Black, new PointF(0, 7));
for(int i=1;i<=12;i++)
{
//Y軸スケールを描画
if (i<11)
{
gph.DrawString((i*10).ToString(), new Font("宋体", 11), Brushes.Black, new PointF(cPt.X-30, cPt.Yi*30-6));
gph.DrawLine(Pens.Black, cPt.X-3,cPt.Yi*30,cPt.X,cPt.Yi*30);
}
//X軸項目を描画
gph.DrawString(month[i-1].Substring(0,1), new Font("宋体", 11), Brushes.Black, new PointF(cPt.X+i*30-5, cPt.Y+5 ));
gph.DrawString(month[i-1].Substring(1,1), new Font("宋体", 11), Brushes.Black, new PointF(cPt.X+i*30-5, cPt.Y+20 ));
if(month[i-1].Length>2) gph.DrawString(month[i-1].Substring(2,1), new Font("宋体", 11), Brushes.Black, new PointF(cPt. X+i*30-5、cPt.Y+35));
//ドットを描画します
gph.DrawEllipse(Pens.Black,cPt.X+i*30-1.5F,cPt.Yd[i-1]*3-1.5F,3,3);
gph.FillEllipse(new SolidBrush(Color.Black),cPt.X+i*30-1.5F,cPt.Yd[i-1]*3-1.5F,3,3);
//数値を描画する
gph.DrawString(d[i-1].ToString(), new Font("宋体", 11), Brushes.Black, new PointF(cPt.X+i*30,cPt.Yd[i-1]*3 ));
// ポリラインを描画します
if(i>1) gph.DrawLine(Pens.Red,cPt.X+(i-1)*30,cPt.Yd[i-2]*3,cPt.X+i*30,cPt.Yd[i- 1]*3);
}
//出力画像を保存
bMap.Save(Response.OutputStream, ImageFormat.Gif);
http://www.cnblogs.com/172838427/archive/2006/09/19/508688.html