winfrom画图.docx

上传人:b****5 文档编号:11568866 上传时间:2023-03-19 格式:DOCX 页数:8 大小:24.06KB
下载 相关 举报
winfrom画图.docx_第1页
第1页 / 共8页
winfrom画图.docx_第2页
第2页 / 共8页
winfrom画图.docx_第3页
第3页 / 共8页
winfrom画图.docx_第4页
第4页 / 共8页
winfrom画图.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

winfrom画图.docx

《winfrom画图.docx》由会员分享,可在线阅读,更多相关《winfrom画图.docx(8页珍藏版)》请在冰豆网上搜索。

winfrom画图.docx

winfrom画图

如何在C#的WinForm中制作饼状图和柱状图(2008-11-0409:

54:

55)

标签:

亚克力 杂谈 

分类:

亚克力

 

 

当我们的软件需要各种饼状图和柱状图来表示数据时,我们或许会想到用Offices中的图形控件或是第三方控件,但现在的第三方控件大都需要注册,有些免费的控件会有开发商的标记等。

而对于使用Offices的图形控件来说,并不能在程序中得于很好控制亚克力,其使用的简易程度也较低,所以在这我给出在C#中使用GDI+实现饼状图和柱状图跟数据库联接显示数据的方法。

usingSystem;

usingSystem.IO;//用于文件存取

usingSystem.Data;//用于数据访问

usingSystem.Drawing;//提供画GDI+图形的基本功能

usingSystem.Drawing.Text;//提供画GDI+图形的高级功能

usingSystem.Drawing.Drawing2D;//提供画高级二维,矢量图形功能

usingSystem.Drawing.Imaging;//提供画GDI+图形的高级功能

namespaceBaseLayer

{

publicclassPieChart

{

publicPieChart()

{

}

//Render是图形大标题,图开小标题,图形宽度,图形长度,饼图的数据集和饼图的数据集要表示出来的数据

publicImageRender(stringtitle,stringsubTitle,intwidth,intheight,DataSetchartData,intDataLine)

{

constintSIDE_LENGTH=400;

constintPIE_DIAMETER=200;

DataTabledt=chartData.Tables[0];

//通过输入参数,取得饼图中的总基数

floatsumData=0;

foreach(DataRowdrindt.Rows)

{

sumData+=Convert.ToSingle(dr[DataLine]);

}

//产生一个image对象,并由此产生一个Graphics对象

Bitmapbm=newBitmap(width,height);

Graphicsg=Graphics.FromImage(bm);

//设置对象g的属性亚克力

g.ScaleTransform((Convert.ToSingle(width))/SIDE_LENGTH,(Convert.ToSingle(height))/SIDE_LENGTH);

g.SmoothingMode=SmoothingMode.Default;

g.TextRenderingHint=TextRenderingHint.AntiAlias;

//画布和边的设定

g.Clear(Color.White);

g.DrawRectangle(Pens.Black,0,0,SIDE_LENGTH-1,SIDE_LENGTH-1);

//画饼图标题

g.DrawString(title,newFont("Tahoma",14),Brushes.Black,newPointF(5,5));

//画饼图的图例

g.DrawString(subTitle,newFont("Tahoma",12),Brushes.Black,newPointF(7,35));

//画饼图

floatcurAngle=0;

floattotalAngle=0;

for(inti=0;i

{

curAngle=Convert.ToSingle(dt.Rows[i][DataLine])/sumData*360;

g.FillPie(newSolidBrush(ChartUtil.GetChartItemColor(i)),100,65,PIE_DIAMETER,PIE_DIAMETER,totalAngle,curAngle);

g.DrawPie(Pens.Black,100,65,PIE_DIAMETER,PIE_DIAMETER,totalAngle,curAngle);

totalAngle+=curAngle;

}

//画图例框及其文字

g.DrawRectangle(Pens.Black,200,300,199,99);

g.DrawString("图表说明",newFont("Tahoma",12,FontStyle.Bold),Brushes.Black,newPointF(200,300));

//画图例各项

PointFboxOrigin=newPointF(210,330);

PointFtextOrigin=newPointF(235,326);

floatpercent=0;

for(inti=0;i

{亚克力

g.FillRectangle(newSolidBrush(ChartUtil.GetChartItemColor(i)),boxOrigin.X,boxOrigin.Y,20,10);

g.DrawRectangle(Pens.Black,boxOrigin.X,boxOrigin.Y,20,10);

percent=Convert.ToSingle(dt.Rows[i][DataLine])/sumData*100;

g.DrawString(dt.Rows[i][1].ToString()+"-"+dt.Rows[i][0].ToString()+"("+percent.ToString("0")+"%)",newFont("Tahoma",10),Brushes.Black,textOrigin);

boxOrigin.Y+=15;

textOrigin.Y+=15;

}

//回收资源

g.Dispose();

return(Image)bm;

}

}

//画条形图

publicclassBarChart

{

publicBarChart()

{

}

//Render是图形大标题,图开小标题,图形宽度,图形长度,饼图的数据集和饼图的数据集

publicImageRender(stringtitle,stringsubTitle,intwidth,intheight,DataSetchartData)

{

constintSIDE_LENGTH=400;

constintCHART_TOP=75;

constintCHART_HEIGHT=200;

constintCHART_LEFT=50;

constintCHART_WIDTH=300;

DataTabledt=chartData.Tables[0];

//计算最高的点

floathighPoint=0;

foreach(DataRowdrindt.Rows)

{

if(highPoint

{

highPoint=Convert.ToSingle(dr[0]);

}

}

//建立一个Graphics对象实例

Bitmapbm=newBitmap(width,height);

try

{

Graphicsg=Graphics.FromImage(bm);

//设置条图图形和文字属性

g.ScaleTransform((Convert.ToSingle(width))/SIDE_LENGTH,(Convert.ToSingle(height))/SIDE_LENGTH);

g.SmoothingMode=SmoothingMode.Default;

g.TextRenderingHint=TextRenderingHint.AntiAlias;

//设定画布和边

g.Clear(Color.White);

g.DrawRectangle(Pens.Black,0,0,SIDE_LENGTH-1,SIDE_LENGTH-1);

//画大标题

g.DrawString(title,newFont("Tahoma",14),Brushes.Black,newPointF(5,5));

//画小标题

g.DrawString(subTitle,newFont("Tahoma",12),Brushes.Black,newPointF(7,35));

//画条形图

floatbarWidth=CHART_WIDTH/(dt.Rows.Count*2);

PointFbarOrigin=newPointF(CHART_LEFT+(barWidth/2),0);

floatbarHeight=dt.Rows.Count;

for(inti=0;i

{

barHeight=Convert.ToSingle(dt.Rows[i][0])*200/highPoint*1;

barOrigin.Y=CHART_TOP+CHART_HEIGHT-barHeight;

g.FillRectangle(newSolidBrush(ChartUtil.GetChartItemColor(i)),barOrigin.X,barOrigin.Y,barWidth,barHeight);

barOrigin.X=barOrigin.X+(barWidth*2);

}

//设置边

g.DrawLine(newPen(Color.Black,2),newPoint(CHART_LEFT,CHART_TOP),newPoint(CHART_LEFT,CHART_TOP+CHART_HEIGHT));

g.DrawLine(newPen(Color.Black,2),newPoint(CHART_LEFT,CHART_TOP+CHART_HEIGHT),newPoint(CHART_LEFT+CHART_WIDTH,CHART_TOP+CHART_HEIGHT));

//画图例框和文字

g.DrawRectangle(newPen(Color.Black,1),200,300,199,99);

g.DrawString("图表说明",newFont("Tahoma",12,FontStyle.Bold),Brushes.Black,newPointF(200,300));

//画图例

PointFboxOrigin=newPointF(210,330);

PointFtextOrigin=newPointF(235,326);

for(inti=0;i

{

g.FillRectangle(newSolidBrush(ChartUtil.GetChartItemColor(i)),boxOrigin.X,boxOrigin.Y,20,10);

g.DrawRectangle(Pens.Black,boxOrigin.X,boxOrigin.Y,20,10);

g.DrawString(dt.Rows[i][1].ToString()+"-"+dt.Rows[i][0].ToString(),newFont("Tahoma",10),Brushes.Black,textOrigin);

boxOrigin.Y+=15;

textOrigin.Y+=15;

}

//输出图形

g.Dispose();

returnbm;

}

catch

{

returnbm;

}

}

}

publicclassChartUtil

{

publicChartUtil()

{

}

publicstaticColorGetChartItemColor(intitemIndex)

{

ColorselectedColor;

switch(itemIndex)

{

case0:

selectedColor=Color.Blue;

break;

case1:

selectedColor=Color.Red;

break;

case2:

selectedColor=Color.Yellow;

break;

case3:

selectedColor=Color.Purple;

break;

default:

selectedColor=Color.Green;

break;

}

returnselectedColor;

}

}

}

以上是一个完整的WinForm中制作饼状图和柱状图源程序,大家可以通过以上程序的更改,做出能满足自己程序的需要。

画饼状图的一个简单例子(2008-05-2813:

41:

30)

标签:

杂谈 

分类:

C#

 

  privatevoidCreateImage()

  {

   //获取男员工数目

   intman=40;

   //获取女员工数目

   intwoman=60;

   intSum=man+woman;

   //创建画图对象

   intwidth=400,height=450;

   Bitmapbitmap=newBitmap(width,height);

   Graphicsg=Graphics.FromImage(bitmap);

   try

   {

    //清空背景色

    g.Clear(Color.White);

    Penpen1=newPen(Color.Red);

    Brushbrush1=newSolidBrush(Color.YellowGreen);

    Brushbrush2=newSolidBrush(Color.Blue);

    Brushbrush3=newSolidBrush(Color.Brown);

    Fontfont1=newFont("CourierNew",16,FontStyle.Bold);

    Fontfont2=newFont("CourierNew",8);

    g.FillRectangle(brush1,0,0,width,height);   //绘制背景图

    g.DrawString("公司男女比例饼形图",font1,brush2,newPoint(80,20)); //书写标题

    intpiex=100,piey=100,piew=150,pieh=150;

    //男员工在圆中分配的角度

    floatangle1=Convert.ToSingle((360/Convert.ToSingle(Sum))*Convert.ToSingle(man));

    //女员工在圆中分配的角度

    floatangle2=Convert.ToSingle((360/Convert.ToSingle(Sum))*Convert.ToSingle(woman));

    g.FillPie(brush2,piex,piey,piew,pieh,0,angle1); //绘制男员工所占比例

    g.FillPie(brush3,piex,piey,piew,pieh,angle1,angle2); //绘制女员工所占比例

    //绘制标识

    g.DrawRectangle(pen1,50,300,300,100); //绘制范围框

    g.FillRectangle(brush2,90,320,20,10); //绘制小矩形

    g.DrawString("男员工占公司总人数比例:

"+Convert.ToSingle(man)*100/Convert.ToSingle(Sum)+"%",font2,brush2,120,320);

    g.FillRectangle(brush3,90,360,20,10);

    g.DrawString("女员工占公司总人数比例:

"+Convert.ToSingle(woman)*100/Convert.ToSingle(Sum)+"%",font2,brush3,120,360);

   }

   catch(Exceptionmd)

   {

    Response.Write(md.Message);

   }

   System.IO.MemoryStreamms=newSystem.IO.MemoryStream();

   bitmap.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);

   Response.ClearContent();

   Response.ContentType="image/Gif";

   Response.BinaryWrite(ms.ToArray());

       

             

             

  }

使用ASP.NET画饼状图

2007年07月14日星期六下午11:

30

使用ASP.NET画饼状图

<%@Page    ContentType    =    "image/gif"%>   

<%@Import    Namespace    =    "System.Drawing"    %>   

<%@Import    Namespace    =    "System.Drawing.Imaging"    %>   

<%@ImportNamespace="System.Drawing.Text"%>

   

void    Page_Load    (Object    sender,    EventArgs    e)   

{   

            Bitmap    objBitmap;   

            Graphics    objGraphics;   

            

             //建立画布

            objBitmap    =    new    Bitmap(400,    440);   

            objGraphics    =    Graphics.FromImage(objBitmap);   

          

            //填充背景

            objGraphics.Clear(Color.White);

             //绘制饼状图

            Penp=newPen(Color.Yellow,0);

            Rectanglerect=newRectangle(10,10,380,380);

            objGraphics.DrawEllipse(p,rect);

          

            //填充饼状图

            Brushb1=newSolidBrush(Color.Red);

            Brushb2=newSolidBrush(Color.Green);

            Brushb3=newSolidBrush(Color.Blue);

            objGraphics.FillPie(b1,rect,0f,120f);

            objGraphics.FillPie(b2,rect,120f,120f);

            objGraphics.FillPie(b3,rect,240f,120f);

          

            //绘制文字

            FontFamilyfontfml=newFontFamily(GenericFontFamilies.Serif);

            Fontfont=newFont(fontfml,20);

            SolidBrushbrush=newSolidBrush(Color.Blue);

            objGraphics.DrawString("ASP.NETC#绘图示例",font,brush,50,400);

            //输出并保存图象

            objBitmap.Save(Response.OutputStream,    ImageFormat.Gif);   

            objBitmap.Save(Server.MapPath("x.jpg"),    ImageFormat.Jpeg);   

          

            //结束绘制

            objBitmap.Dispose();   

            objGraphics.Dispose();   

}   

   

     无标题页

     

     

    

     

     

运行结果如下所示:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1