GDI+ 的服务分为以下三个大类:
二维矢量图形
图像处理
版式
GDI+ 处理的时候实际上就是先建立画布,然后在画布上画图形的框架,接着是在框架里面填充东西,最后是释放资源 下面是一个饼图的例子
using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Drawing2D; 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;
namespace GDITest { /// <summary> /// topn3dpie 的摘要说明。 /// </summary> public class GDITest: System.Web.UI.Page { private void Page_Load(object sender, System.EventArgs e) { Response.ContentType = "image/gif"; const int width = 300, height = 300; int x = 30, y = 50;
int pieWidth = 120, pieHeight = 40, pieShadow = 15; int[] arrVote = {70,90,80,20,60,40}; Random oRan = new Random();
Bitmap objBitmap = new Bitmap(width-100, height-100); Graphics objGraphics = Graphics.FromImage(objBitmap); objGraphics.DrawRectangle(new Pen(Color.Black),0,0,width-100,height-100); objGraphics.FillRectangle(new SolidBrush(Color.White), 1, 1,width - 2, height - 2); SolidBrush objBrush = new SolidBrush(Color.Blue); objGraphics.SmoothingMode = SmoothingMode.AntiAlias; int iCurrentPos = 0;
Color[] arrColor = {Color.Red,Color.Red,Color.Red,Color.Red,Color.Red,Color.Red};
for(int i = arrVote.Length - 1 ; i >= 0; i--) { arrColor[i] = Color.FromArgb(oRan.Next(255), oRan.Next(255), oRan.Next(255)); }
for(int i = arrVote.Length - 1 ; i >= 0; i--) { objBrush.Color = arrColor[i]; for(int iLoop2 = 0; iLoop2 < pieShadow; iLoop2++) objGraphics.FillPie(new HatchBrush(HatchStyle.Percent50,objBrush.Color),x, y + iLoop2, pieWidth, pieHeight, iCurrentPos, arrVote[i]); iCurrentPos += arrVote[i]; }
iCurrentPos = 0; for(int i = arrVote.Length - 1 ; i >= 0;i--) { objBrush.Color = arrColor[i]; objGraphics.FillPie(objBrush,x, y, pieWidth, pieHeight, iCurrentPos, arrVote[i]); iCurrentPos += arrVote[i]; }
objBitmap.Save(Response.OutputStream, ImageFormat.Jpeg); // clean up... objGraphics.Dispose(); objBitmap.Dispose(); }
#region Web 窗体设计器生成的代码 override protected void OnInit(EventArgs e) { // // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。 // InitializeComponent(); base.OnInit(e); } /// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// </summary> private void InitializeComponent() { this.Load += new System.EventHandler(this.Page_Load);
} #endregion } }

|