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

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

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

所有的圖形用戶界面(GUI)應用程序都與硬件設備(顯示器,打印機,掃描儀)進行交互,這可以表示為可讀的數據。不過應用程序並不直接和設備之間進行通信,否則必須為每台設備分別編寫 不同的用戶接口代碼。為了避免這種重復的工作,我們可以在應用程序和設備之間使用第三個組件,此組件將轉換和傳送發送到設備的數據,以及設備發送到程序的數據。而這個組件就是GDI+GDI+.NET Framework中與圖形設備進行交互的入口。GDI+是一組C++類,位于一個名為Gdiplus.dll的類庫中。Gdiplus.dllWindows XPWindows 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

     }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ASP.NET MVC是一种基于ASP.NETWeb应用程序框架,它使用模型-视图-控制器(MVC)模式来构建Web应用程序。EF(Entity Framework)是一种ORM(对象关系映射)框架,它可以将数据库的数据映射到.NET对象。增删改查是指对数据库的数据进行增加、删除、修改和查询操作。在ASP.NET MVC,可以使用EF来进行数据库操作,实现增删改查功能。 ### 回答2: ASP.NET MVC 和 EF 是一对强力的开发工具,可以面向对象地开发 Web 应用程序。他们使用的是基于现代软件工程原则的模型-视图控制器模式,也就是MVC。这种模式不仅分离了应用程序的三个核心方面,即用户界面、数据业务逻辑和用户数据,而且还允许多个团队在不干涉彼此的情况下同时开发应用程序。 对于ASP.NET MVC来说,它是一种Web应用程序开发框架,适用于开发具有复杂功能和交互需要的动态Web应用程序。在ASP.NET MVC,模型-视图-控制器(MVC)模式被广泛使用,以将Web应用程序拆分为三个核心部分:控制器,模型和视图。控制器作为请求接收者,负责处理请求并将响应发送回客户端;视图则负责呈现应用程序的用户界面;而模型则负责管理和检索应用程序的状态和数据。 对于EF来说,它是一种ORM对象关系映射工具,可自动将.NET对象映射为关系数据库的表、视图和存储过程。使用EF,我们可以通过一个简单的API访问数据库,而不需要复杂的SQL语句。EF支持各种数据库,包括Microsoft SQL Server,Oracle,MySQL和SQLite等。 对于ASP.NET MVC和EF的增删改查,我们可以通过以下步骤来实现: 1. 建立数据库连接 在使用EF进行增删改查之前,我们需要建立数据库连接。在ASP.NET MVC,我们可以在Web.config文件配置连接字符串,指定数据库的位置和访问凭据。 2. 创建模型 我们需要创建一个类来定义模型。该类应该包含与数据库表的列对应的属性。这些属性名称和数据类型应该与数据库的列对应,以便我们可以将数据从一个位置传递到另一个位置。 3. 创建数据库上下文 我们需要创建一个EF数据库上下文,该上下文负责管理数据库连接和数据操作。我们可以在该上下文创建插入、更新、删除和查询方法。 4. 插入数据 我们可以通过在数据库上下文创建一个新对象并将其添加到数据库上下文来插入数据。保存更改后,这些更改将通过EF发送到数据库。 5. 更新数据 要更新数据,我们可以在数据库上下文查询现有对象,并更改其属性。一旦更改完成,我们可以保存更改并将更改提交到数据库。 6. 删除数据 要删除数据,我们可以在数据库上下文查询现有对象,并调用删除操作。一旦删除完成,我们可以保存更改并将更改提交到数据库。 7. 查询数据 要查询数据,我们可以使用数据库上下文来执行LINQ查询。LINQ查询可用于检索数据,并通过视图将数据呈现给用户。 综上所述,我们可以看出ASP.NET MVC和EF是一对非常强大的应用程序开发工具,可以帮助我们构建复杂的Web应用程序,并为我们提供了一种简单而直观的方法来管理数据库操作。在项目应用它们,可以极大地提高我们的开发效率,提高生产力。 ### 回答3: ASP.NET MVC是一种基于模型-视图-控制器(Model-View-Controller, MVC)架构设计的Web应用程序框架。该框架使用MVC设计模式,将应用程序分为几个不同的组件,这些组件分别处理不同方面的应用程序逻辑。 Entity Framework(EF)是一种对象关系映射(Object-Relational Mapping, ORM)框架,用于将数据库的表格数据映射到.NET对象。它允许开发人员通过使用.NET语言(如C#和VB.NET)来编写应用程序,而不必直接处理SQL代码。 在ASP.NET MVC应用程序使用EF可以简化数据访问层的开发过程,并为应用程序提供数据持久化解决方案。下面将介绍如何在ASP.NET MVC完成增删改查方法: 增加数据: 应用程序需要将表格的数据添加到数据库,可以通过以下几个步骤来完成添加数据的方法: 1、在模型定义一个实体,该实体将表示您要添加到表的数据。 2、在控制器创建一个方法,该方法接受一个参数,该参数是从HTTP POST请求发送到服务器的实体。 3、在方法创建一个新的实体,将数据从请求参数分配给该实体的属性。 4、将新实体添加到EF上下文并保存更改。 删除数据: 应用程序需要从一个表删除数据,可以通过以下几个步骤来完成删除数据的方法: 1、在控制器创建一个方法,该方法接受一个参数,该参数是表格的数据的唯一标识符。 2、在方法使用EF查找需要删除的实体,并从 EF上下文删除实体。 3、将更改保存到数据库。 更新数据: 应用程序需要更新表格的数据,可以通过以下几个步骤来完成更新数据的方法: 1、在模型定义一个实体,该实体将表示您要更新表格的数据。 2、在控制器创建一个方法,该方法接受一个参数,该参数是从HTTP POST请求发送到服务器的实体。 3、在方法使用EF查找需要更新的实体。 4、将传入的实体的属性复制到EF查找到的实体。 5、将更改保存到数据库。 查询数据: 应用程序需要从一个表检索数据,可以通过以下几个步骤来完成查询数据的方法: 1、在控制器创建一个方法,该方法将返回从数据库检索到的实体。 2、在方法使用EF执行一个查询,以从表检索数据。 3、返回从DB检索到的实体。 综上所述,使用ASP.NET MVC和EF可以轻松地完成最常用的数据库操作,增加、删除、修改和查询数据。此外,这些操作的执行效率也很高,可以为开发者节省大量的时间和精力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值