Point myRec = new Point ( 535 , 30 ) ; Point myDec = new Point (
560 , 26 ) ; //以上是在图01中为下面绘制定位 g . DrawString ( "单位:万套" , new Font (
"宋体" , 9 ) , Brushes . Black , new Point ( 525 , 12 ) ) ; for ( int i =
0 ; i < sMoth.Length ; i++ ) { g . DrawRectangle ( Pens.Black ,
myRec . X , myRec . Y , 20 , 10 ) ; //绘制小方块 g . FillRectangle ( new
SolidBrush ( GetColor ( i ) ) , myRec . X , myRec . Y , 20 , 10 )
; //填充小方块 g . DrawString ( sMoth [ i ] . ToString ( ) , new Font (
"宋体" , 9 ) , Brushes . Black , myDec ) ; //绘制小方块右边的文字 myRec . Y +=
15 ; myDec . Y += 15 ; } 4.
根据从数据库中读取的数据,绘制数据Bar图:
5.
在【位置】的文本框中输入"http://localhost/Bar"。然后单击【确定】按钮,这样在Visual Studio
.Net就会在当前项目文件所在目录中建立一个名称为"Bar"文件夹,里面存放是此项目的项目文件,项目中的其他文件存放的位置是计算机Internet信息服务的默认的Web站点所在的目录中新建的一个名称为"Bar"的文件夹中。具体如图02所示:
图02:新建一个ASP.NET项目对话框
6. 把Visual Studio
.Net的当前窗口切换到WebForm的代码编辑窗口,即:WebForm1.aspx.cs文件的编辑窗口。
using System ; using System . Collections ; using System .
ComponentModel ; using System . Data ; using System . Drawing
; using System . Web ; using System . Web . SessionState ; using
System . Web . UI ; using System . Web . UI . WebControls ; using
System . Web . UI . HtmlControls ; using System . Drawing . Imaging
; //下面程序中使用的ImageFormat类所在的命名空间 using System . Data . OleDb
; //下面程序中使用到关于数据库方面的类所在的命名空间 8.
WebForm1.aspx.cs文件中的Page_Load事件处理代码中添加下列代码,下列代码的作用是打开数据库,读取数据,并以此数据形成数据Bar图:
string sRouter = "c:\\db.mdb" ; //获得当前Access数据库在服务器端的绝对路径 string
strCon = " Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + sRouter
; //创建一个数据库连接 OleDbConnection myConn = new OleDbConnection ( strCon
) ; string strCom = " SELECT YF ,SL FROM Table01 ORDER BY YF"
; myConn.Open ( ) ; OleDbCommand myCommand = new OleDbCommand (
strCom , myConn ) ; OleDbDataReader myOleDbDataReader =
myCommand.ExecuteReader ( )
; //创建OleDbDataReader实例,并以此实例来获取数据库中各条记录数据 int [ ] iXiaoSH = new int
[ 12 ] ; //定义一个数组,用以存放从数据库中读取的销售数据 string [ ] sMoth = new string [
12 ] ; //定义一个数组,用以存放从数据库中读取的销售月份 int iIndex = 0 ; while (
myOleDbDataReader.Read ( ) ) { iXiaoSH [ iIndex ] =
myOleDbDataReader.GetInt32 ( 1 ) ; sMoth [ iIndex ] =
myOleDbDataReader.GetInt32 ( 0 ) . ToString ( ) + "月" ; iIndex++
; } //读取Table01数据表中的各条数据,并存放在先前定义的二个数组中 myConn . Close ( )
; myOleDbDataReader . Close ( ) ; //关闭各种资源 Bitmap bm = new Bitmap
( 600 , 250 ) ; //创建一个长度为600,宽带为250的Bitmap实例 Graphics g ; g =
Graphics.FromImage ( bm ) ; //由此Bitmap实例创建Graphic实例 g . Clear (
Color . Snow ) ; //用Snow色彩为背景色填充此绘画图面 g . DrawString ( "
××公司××器件2002年度销售情况一览表" , new Font ( "宋体" , 16 ) , Brushes . Black , new
Point ( 5 , 5 ) )
; //在绘画图面的指定位置,以指定的字体、指定的颜色绘制指定的字符串。即为图表标题 //以下代码是是实现图01中的右上部 Point
myRec = new Point ( 535 , 30 ) ; Point myDec = new Point ( 560 , 26 )
; //以上是在图01中为下面绘制定位 g . DrawString ( "单位:万套" , new Font ( "宋体" , 9 )
, Brushes . Black , new Point ( 525 , 12 ) ) ; for ( int i = 0 ; i <
sMoth.Length ; i++ ) { g . DrawRectangle ( Pens.Black , myRec . X ,
myRec . Y , 20 , 10 ) ; //绘制小方块 g . FillRectangle ( new SolidBrush (
GetColor ( i ) ) , myRec . X , myRec . Y , 20 , 10 ) ; //填充小方块 g .
DrawString ( sMoth [ i ] . ToString ( ) , new Font ( "宋体" , 9 ) , Brushes
. Black , myDec ) ; //绘制小方块右边的文字 myRec . Y += 15 ; myDec . Y +=
15 ; } //以下代码是绘制图01中的Bar图,及其销售数量 int iBarWidth = 40 ; int
scale = 10 ; for ( int i = 0 ; i < iXiaoSH . Length ; i++ )
{ g . DrawRectangle ( Pens.Black , ( i * iBarWidth ) + 15 , 250 - (
iXiaoSH [ i ] * scale ) , 20 , ( iXiaoSH [ i ] * scale ) + 5 )
; //绘制Bar图 g . FillRectangle ( new SolidBrush ( GetColor ( i ) ) , (
i * iBarWidth ) + 15 , 250 - ( iXiaoSH [ i ] * scale ) , 20 , ( iXiaoSH [
i ] * scale ) + 5 ) ; //以指定的色彩填充Bar图 g . DrawString ( iXiaoSH [ i ]