C# 网页画图

来源:互联网 发布:淘宝网野生山核桃仁 编辑:程序博客网 时间:2024/06/10 08:10

代码贴着保存下

using System;using System.Collections;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.IO;using System.Drawing;using System.Drawing.Drawing2D;using System.Drawing.Imaging;public partial class _Default : System.Web.UI.Page{    int h = 1000;    int w = 1000;    protected void Page_Load(object sender, EventArgs e)    {        Bitmap img = new Bitmap(h, w);//创建Bitmap对象        MemoryStream stream = draw();        img.Save(stream, ImageFormat.Jpeg);          //保存绘制的图片        Response.Clear();        Response.ContentType = "image/jpeg";        Response.BinaryWrite(stream.ToArray());    }    public MemoryStream draw()    {        string[] Words = {"壹","贰","叁","肆","伍","陆"};        Bitmap img = new Bitmap(h, w);//创建Bitmap对象        Graphics g = Graphics.FromImage(img);//创建Graphics对象        g.DrawRectangle(new Pen(Color.White, img.Height), 2, 2, img.Width - 2, img.Height - 2); //矩形 底色        ArrayList coordinate = getXY(Words.Length,img.Height,img.Width);        ArrayList Radius = new ArrayList();        var R = new Random();        Color Mycolor = Color.FromArgb(R.Next(100, 150), R.Next(255), R.Next(255), R.Next(255));        Font font = new Font("Arial", 20);// 字体        LinearGradientBrush font_brush = new LinearGradientBrush(new Rectangle(0, 0, img.Width, img.Height), Color.Black, Color.Black, 1.2F, true);        int j = 0;        //画圆 写字        foreach (Point p in coordinate)        {            int r = R.Next(20, 40);            Radius.Add(r);            SolidBrush bush = new SolidBrush(Mycolor);            g.FillEllipse(bush, p.X - r, p.Y - r, 2*r, 2*r);//画填充椭圆的方法,x坐标、y坐标、宽、高:            g.DrawString(Words[j++], font, font_brush, p); // 标记        }        //连线        var penColor = Color.FromArgb(140, R.Next(255), R.Next(255), R.Next(255));        for (int i = 1; i < coordinate.Count; i++)         {            Pen pen = new Pen(penColor, 2);            g.DrawLine(pen, (Point)coordinate[0], (Point)coordinate[i]);        }                MemoryStream stream = new MemoryStream();   //保存绘制的图片        img.Save(stream, ImageFormat.Jpeg);          //保存绘制的图片        return stream;    }    private ArrayList getXY(int len, int h, int w)     {        ArrayList al = new ArrayList();        double d = 50.0;        var R = new Random();        int h1 = (int)(0.1 * h);        int h2 = (int)(0.9 * h);        int w1 = (int)(0.1 * w);        int w2 = (int)(0.9 * w);        while (al.Count < len)         {            Point p = new Point(R.Next(h1,h2), R.Next(w1,w2));            bool Add = true;            foreach (Point q in al)             {                if (Dist(p, q) < d)                {                    Add = false;                    break;                }            }            if (Add)                al.Add(p);        }        return al;    }    private double Dist(Point p1,Point p2)     {        return Math.Sqrt(Math.Abs(p1.X - p2.X) * Math.Abs(p1.X - p2.X) + Math.Abs(p1.Y - p2.Y) * Math.Abs(p1.Y - p2.Y));    }}


效果如下




0 0