C#实现网页画图功能

作者:epleone 时间:2021-12-05 19:33:41 

本文实例为大家分享了C#实现网页画图的具体代码,供大家参考,具体内容如下

代码贴着保存下


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));
 }
}

效果如下

C#实现网页画图功能

来源:https://blog.csdn.net/epleone/article/details/46128017

标签:C#,网页画图
0
投稿

猜你喜欢

  • IntelliJ IDEA 15款超级牛逼插件推荐(自用,超级牛逼)

    2023-10-10 05:51:22
  • Java文件操作之IO流 File类的使用详解

    2023-07-26 00:49:41
  • 使用反射方式获取JPA Entity的属性和值

    2023-07-24 17:43:22
  • Java Swing实现坦克大战游戏

    2021-12-16 21:04:03
  • SpringCloud重试机制配置详解

    2023-05-13 23:48:46
  • Android中通过RxJava进行响应式程序设计的入门指南

    2023-06-27 08:17:46
  • 递归出现栈溢出stackoverflow的问题及解决

    2023-01-29 16:36:10
  • java 使用HttpURLConnection发送数据简单实例

    2023-12-12 01:44:00
  • Zookeeper和Eureka哪个更好?

    2023-11-10 02:57:35
  • java的引用类型的详细介绍

    2022-05-15 09:34:40
  • 浅谈Java中方法参数传递的问题

    2021-11-06 04:24:46
  • springMvc注解之@ResponseBody和@RequestBody详解

    2022-10-09 17:57:19
  • java基础二叉搜索树图文详解

    2023-06-01 05:43:19
  • java 解决Eclipse挂掉问题的方法

    2023-02-19 14:05:55
  • java实现二分法的完整代码

    2023-08-18 22:09:06
  • Java流式操作之Collectors工具类操作指南

    2022-12-01 01:25:55
  • 初学者Android studio安装图文详解

    2022-08-06 07:22:12
  • Android入门之使用SharedPreference存取信息详解

    2023-09-09 10:25:53
  • Java编程中使用XFire框架调用WebService程序接口

    2023-11-06 20:16:33
  • JAVA如何调用Shell脚本

    2022-11-25 01:13:13
  • asp之家 软件编程 m.aspxhome.com