论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Asp.net教程
Tag:静态页面,treeview,gridview,repeater,dataset,sqldatareader,ado.net,上传,三层,ajax,xml,留言本,新闻发布,商城,注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,触发器,socket,form认证,登录,视频教程

Asp.net中使用GDI+繪製圖形

文章类别:Asp.net | 发表日期:2008-10-5 22:12:36

GDI+ ——下一代圖形設備接口

所有的圖形用戶界面(GUI)應用程序都與硬件設備(顯示器,打印機,掃描儀)進行交互,這可以表示為可讀的數據。不過應用程序並不直接和設備之間進行通信,否則必須為每台設備分別編寫 不同的用戶接口代碼。為了避免這種重復的工作,我們可以在應用程序和設備之間使用第三個組件,此組件將轉換和傳送發送到設備的數據,以及設備發送到程序的數據。而這個組件就是GDI+。GDI+是.NET Framework中與圖形設備進行交互的入口。GDI+是一組C++類,位于一個名為Gdiplus.dll的類庫中。Gdiplus.dll是Windows XP和Windows Server 2003操作系統中一個内置組件。好了,學術性的東西在這裡就不多廢唇舌了,下面我們用GDI+在Web Form中來畫一幅圖。

像類似這樣的圖想必大家都見過,當然這個圖並不標準,這裡把代碼貼出來有興趣的可以試一試!

 

namespace Sky_MsdnDataGrid

 

{

 

     using System;

 

     using System.Collections;

 

     using System.ComponentModel;

 

     using System.Data;

 

     using System.Drawing;

 

     using System.Drawing.Imaging;

 

     using System.Web;

 

     using System.Web.SessionState;

 

     using System.Web.UI;

 

     using System.Web.UI.WebControls;

 

     using System.Web.UI.HtmlControls;

 


 


     /// <summary>

 

     /// AspxChart 的摘要描述。

 

     /// </summary>

 

     public class AspxChart : System.Web.UI.Page

 

     {

 

           private   Bitmap bitmap;

 

           private Graphics graphics;

 

           private    int[] arrValues;

 

           private string[] arrValueNames;

 


 


           private void Page_Load(object sender, System.EventArgs e)

 

           {

 

                arrValues     = new    int[6];

 

                arrValueNames = new string[6];

 

               

 

                arrValues[0]     =    100;

 

                arrValues[1]     =    135;

 

                arrValues[2]     =    115;

 

                arrValues[3]     =    125;

 

                arrValues[4]     =     75;

 

                arrValues[5]     =    120;

 


 


                arrValueNames[0] = "一月";

 

                arrValueNames[1] = "二月";

 

                arrValueNames[2] = "三月";

 

                arrValueNames[3] = "四月";

 

                arrValueNames[4] = "五月";

 

                arrValueNames[5] = "六月";

 


 


                this.Init_Bitmap();

 

                this.Draw_Rectangle();

 

                this.Draw_Pie();

 

               

 

                // 將繪製的圖像以 Gif 的格式保存到當前頁面響應的輸出流中

 

                bitmap.Save(this.Response.OutputStream,ImageFormat.Gif);

 

           }

 

          

 

           /// <summary>

 

           /// 對即將要被繪製的位圖(可想象為一塊畫佈)進行初始動作

 

           /// </summary>

 

           private void Init_Bitmap()

 

           {

 

                bitmap = new Bitmap(400,200);

 

                graphics = Graphics.FromImage(bitmap);

 

                graphics.Clear(Color.White);

 


 


                graphics.DrawString("X 公司上半年銷售情況",new Font("新細明体",16,FontStyle.Underline),Brushes.Black,new PointF(5,5));

 

           }

 


 


           #region Web Form 設計工具產生的程式碼

 

           override protected void OnInit(EventArgs e)

 

           {

 

                //

 

                // CODEGEN: 此為 ASP.NET Web Form 設計工具所需的呼叫。

 

                //

 

                InitializeComponent();

 

                base.OnInit(e);

 

           }

 

          

 

           /// <summary>

 

           /// 此為設計工具支援所必須的方法 - 請勿使用程式碼編輯器修改

 

           /// 這個方法的內容。

 

           /// </summary>

 

           private void InitializeComponent()

 

           {   

 

                this.Load += new System.EventHandler(this.Page_Load);

 


 


           }

 

           #endregion

 

          

 

           /// <summary>

 

           /// 在畫佈上面繪製矩形

 

           /// </summary>

 

           private void Draw_Rectangle()

 

           {

 

                int i;

 

                PointF symbolLeg = new PointF(335,20);

 

                PointF   descLeg = new PointF(360,16);

 

               

 

                for (i = 0; i < arrValueNames.Length; i++)

 

                {

 

                     graphics.FillRectangle(new SolidBrush(GetColor(i)),symbolLeg.X,symbolLeg.Y,20,10);

 

                     graphics.DrawRectangle(Pens.Black,symbolLeg.X,symbolLeg.Y,20,10);

 

                     graphics.DrawString(arrValueNames[i].ToString(),new Font("新細明体",8),Brushes.Black,descLeg);

 


 


                      symbolLeg.Y += 15;

 

                     descLeg.Y   += 16;

 

                }

 


 


                for (i = 0; i < arrValues.Length; i++)

 

                {

 

                     graphics.FillRectangle(new SolidBrush(GetColor(i)),(i*35) + 15,200 - arrValues[i],20,arrValues[i]);

 

                     graphics.DrawRectangle(Pens.Black,(i*35) + 15,200 - arrValues[i],20,arrValues[i]);

 

                }

 

           }

 

          

 

           /// <summary>

 

           /// 在畫佈上面繪製圓餅形

 

           /// </summary>

 

           private void Draw_Pie()

 

           {

 

                int i;

 

                // currentangle代表當前角度 totalangle代表最大角度 totalvalues代表最大的銷售額

 

                float sglCurrentAngle = 0,sglTotalAngle = 0,sglTotalValues = 0;

 

               

 

                // 計算最大銷售額

 

                for (i = 0; i < arrValues.Length; i++)

 

                     sglTotalValues += arrValues[i];

 


 


                for (i = 0; i < arrValues.Length; i++)

 

                {

 

                     // 當月角度值  : 當月銷售額   / 最大銷售額       * 360

 

                     sglCurrentAngle = arrValues[i] / sglTotalValues * 360;

 


 


                     graphics.FillPie(new SolidBrush(GetColor(i)),240,95,100,100,sglTotalAngle,sglCurrentAngle);

 

                     graphics.DrawPie(Pens.Black,240,95,100,100,sglTotalAngle,sglCurrentAngle);

 


 


                     sglTotalAngle += sglCurrentAngle;

 

                }

 

           }

 


 


           #region Helper Function

 

           private Color GetColor(int itemIndex)

 

           {

 

                Color color;

 

                switch(itemIndex)

 

                {

 

                     case 0:

 

                           color = Color.Blue;

 

                           break;

 

                     case 1:

 

                           color = Color.Red;

 

                           break;

 

                     case 2:

 

                           color = Color.Yellow;

 

                           break;

 

                     case 3:

 

                           color = Color.Purple;

 

                           break;

 

                     case 4:

 

                           color = Color.Orange;

 

                           break;

 

                     case 5:

 

                           color = Color.Brown;

 

                           break;

 

                     default:

 

                           color = Color.Blue;

 

                           break;

 

                }

 

                return color;

 

           }

 

           #endregion

 

     }

 

}

上一篇:{技巧}ASP.NET与数据库相关技巧 人气:4044
下一篇:{技巧}asp.net css注释的影响 人气:3909
视频教程列表
文章教程搜索
 
Asp.net推荐教程
Asp.net热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058