이 기사에서는 소개합니다. MS Excel로 생성된 차트처럼 코드를 사용하여 Net에서 차트를 그리는 방법. DataGrid와 같은 테이블을 그릴 수도 있습니다.
존재하다. Net에서 Microsoft는 그리기의 기본 기능을 갖춘 그리기 클래스(System. Drawing.Imaging)를 제공합니다. 예를 들어 직선, 폴리라인, 직사각형, 다각형, 타원, 섹터, 곡선 등이 있으므로 일반 그래픽을 코드를 통해 직접 그릴 수 있습니다. 다음으로 몇 가지 그리기 기능을 소개합니다.
Bitmap bMap=new Bitmap(500,500) //이미지 크기 정의;
bMap.Save(Stream,ImageCodecInfo) //지정된 출력 스트림에 이미지를 저장합니다.
그래픽 gph //GDI 그리기 객체를 정의하거나 생성합니다.
PointF cPt //2차원 평면에서 x, y 좌표를 정의합니다.
DrawString(string,Font,Brush,PonitF) //지정된 Brush 및 Font 개체를 사용하여 지정된 사각형이나 점에 지정된 문자열을 그립니다.
DrawLine(Pen,Ponit,Ponit) //지정된 펜(Pen) 객체를 사용하여 지정된 두 점 사이에 직선을 그립니다.
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,sweepAngle) //지정된 펜을 사용하여 지정된 좌표점, 너비, 높이 및 두 개의 광선으로 구성된 섹터를 그립니다.
좋아요, 그게 전부입니다. 매개변수는 축약되었습니다. 실제 사용 과정에서 모든 사람이 더 깊은 경험을 하게 될 것이라고 믿습니다. 마지막으로, 간단한 예제를 통해 이러한 그리기 기능(꺾은선형 차트)을 어떻게 사용하는지 살펴보겠습니다.
위의 꺾은선형 차트를 그리는 코드는 다음과 같습니다.
//데이터 초기화
string[] 월=새 문자열[12]{"1월","2월","3월","4월","5월","6월","7월","8월","9월","10월" ,"11월","12월"};
float[] d=new float[12]{20.5F,60,10.8F,15.6F,30,70.9F,50.3F,30.7F,70,50.4F,30.8F,20};
//그리기 초기화
비트맵 bMap=new 비트맵(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("월", 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("단위 (10,000)", new Font("宋体", 12), Brushes.Black, new PointF(0, 7));
for(int i=1;i<=12;i++)
{
//Y축 스케일 그리기
만약 (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