贴代码:
Bitmap image = new Bitmap(400, 300);//初始化位图实例,并定义大小 Graphics g = Graphics.FromImage(image);//封装一个绘图图面 g.Clear(Color.White);//清除整个会图面,并用白色填充背景 Rectangle outline = new Rectangle(10, 10, 380, 280);//定义一个矩形框,指定位置和大小 g.DrawEllipse(new Pen(Color.Black, 2), outline);//定义一个椭圆,并绘制边框 g.FillPie(new SolidBrush(Color.Red), outline, 20, 120);//绘制红色扇形,并定义大小 g.FillPie(new SolidBrush(Color.Yellow), outline, 100, 120);//绘制黄色扇形,并定义大小 g.FillPie(new SolidBrush(Color.Blue), outline, 220, 120);//绘制蓝色扇形,并定义大小 g.FillPie(new SolidBrush(Color.Green), outline, 320, 120);//绘制绿色扇形,并定义大小 image.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);//将绘制的图形输出到浏览器显示
效果图如下:
首先要引入三个命名空间:
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
代码:
Response.Clear();//清除缓冲区流中的所有内容输出 Bitmap image = new Bitmap(600,120,PixelFormat.Format24bppRgb);//定义一个600*120大小,24位的bmp图像实例 Graphics g = Graphics.FromImage(image);//根据以上bmp实例定义一个绘图图画 g.Clear(Color.Green);//清除整个绘图图面并以绿色背景填充 g.SmoothingMode = SmoothingMode.AntiAlias;//消除绘画图形的锯齿呈现 //使用指定System.Drawing.StringFormat的格式化属性,用制定的 //System.Drawing.Brush和System.Drawing.Fout对象在指定的矩形绘制指定的文本字符串 g.DrawString("在图像中写入汉字!", new Font("黑体", 32, FontStyle.Bold), new SolidBrush(Color.White), new PointF(120, 40)); //根据矩形,起始颜色和结束颜色以及方向角度定义渐变填充 g.FillRectangle(new LinearGradientBrush(new Point(0, 0), new Point(600, 120), Color.FromArgb(0, 0, 0, 0), Color.FromArgb(255, 255, 255, 255)), 0, 0, 600, 120); //把绘制的图形以jpg格式输出到http流中,即实现在浏览器中显示绘制的图形 image.Save(Response.OutputStream,ImageFormat.Jpeg); g.Dispose();//释放由Graphics占用的系统资源 image.Dispose();//释放右Bitmap对象占用的资源 Response.End();//结束应用程序
//在上面代码中,引入System.Drawing.Imaging命名空间是调用该空间中的SmoothingMode枚举对象,以明确指定是否平滑处理(消除锯齿)应用于直线,曲线和已填充区域的边缘:引入System.Drawing.Imaging命名空间是调用该空间中的PixelFormat枚举对象,用了指定图像中每个像素的颜色数据的格式
效果如图:
接下来绘制坐标图
代码如下:
Bitmap bm = new Bitmap(600,400);//定义位图实例,并初始化大小 Graphics g = Graphics.FromImage(bm);//定义绘图画面,并封装上面的位图实例 g.Clear(Color.GreenYellow);//定义绘图画面背景色 Pen p = new Pen(Color.Blue,2);//定义一个2像素大小,蓝色的铅笔 //用铅笔在画面中间绘制一条x轴线 g.DrawLine(p,new Point(0,200),new Point(bm.Width,200)); //用铅笔在画面中间绘制一条y轴线 g.DrawLine(p,new Point(300,0),new Point(300,bm.Height)); //定义矩形区域,其参数分别表示一个矩形的位置和大小 Rectangle rect1 = new Rectangle(100,50,100,100); Rectangle rect2 = new Rectangle(400, 50, 100, 100); Rectangle rect3 = new Rectangle(250, 250, 100, 100); //分别用上面定义的矩形区域画圆 g.DrawEllipse(p,rect1); g.DrawEllipse(p, rect2); g.DrawEllipse(p, rect3); //绘制一条直线链接第1,2个圆的圆点 g.DrawLine(p,new Point(rect1.X + rect1.Width / 2, rect1.Y + rect1.Height / 2), new Point(rect2.X + rect2.Width / 2, rect2.Y + rect2.Height / 2)); Brush b = new SolidBrush(Color.Red);//定义一个红色的笔刷 Font drawFont = new Font("Arial",12);//定义一个字体实例 //定义坐标值,其中DrawString()方法的参数为:显示值,字体属性,笔刷实例,坐标点 for (int i = 0; i <= 6; i++)//循环绘制x轴坐标值 { g.DrawString(Convert.ToString(i * 100), drawFont, b, new PointF(i * 50 + 300, 200)); } for (int j = 0; j <= 6; j++)//循环绘制y轴坐标值 { g.DrawString(Convert.ToString(j*100),drawFont,b,new PointF(300,200-j*50)); } bm.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);
效果图:
大功告成 都只是一些简单的页面绘图了 要想绘制更精美的图片需要我们不断的去探索了