c#中画图与保存

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#中画图与保存相关的知识,希望对你有一定的参考价值。

想在C#能画直线,然后能记录点的坐标信息,而且画出的图能被保存能jpg或其他格式,请大家帮帮忙,主要解决这些问题:1、怎么画直线(事件,方法)2、怎么记录点3、怎么保存图像尽量详细点,本人是菜鸟。谢谢哈!

画直线:先弄一个画布出来,一般是picturebox,然后在画布上画。
Graphics graphics = pictureBox1.CreateGraphics();
Point p1=new Point(12,15);
Point p2=new Point(0,0);
Pen p = new Pen(Color.Black, 1);
graphics.DrawLine(p,p1,p2);//画出p1p2线段。
记录点:可以用知道要存的点的个数的话,可以直接用Point数组,不知道要记录的个数的话,可以用List<Point>。
保存图片:
Image myimage = new Bitmap(pictureBox1.Width,pictureBox1.Height);
Graphics graphics = Graphics.FromImage(myimage);
Point p1 = new Point(100, 100);
Point p2 = new Point(0, 0);
graphics.Clear(Color.White);
graphics.DrawLine(Pens.Blue, p1, p2);
pictureBox1.Image = myimage;
myimage.Save("e:\\123.jpg",System.Drawing.Imaging.ImageFormat.Jpeg);
图片的格式由System.Drawing.Imaging.ImageFormat决定。
参考技术A GDI+

主要的类:Bitmap Graphics

C#画图——Graphics

  C#要实现简单的画图功能可以利用Graphics这个类,要使用Graphics必需using命名空间System.Drawing(此名明空间下都是关于图形的操作)。首先创建画布:

Bitmap bmp = new Bitmap(1000, 800);
Graphics g = Graphics.FromImage(bmp);

  清除画布的背景色,并且指定颜色填充:

g.Clear(Color.White);

  开始画图:

//画矩形
g.DrawRectangle(new Pen(Color.Red), new Rectangle(0, 0, 600, 400));
//填充扇形
g.FillPie(new SolidBrush(Color.Red), new Rectangle(100, 80, 200, 200), 0, 100);
//在画布上写文字
g.DrawString("A", new Font("Times New Roman", 16), new SolidBrush(Color.Black), 250, 210);

  下面给出完整代码:

 1 public class GraphicsController : Controller
 2 {
 3         public ActionResult Index()
 4         {
 5             return View();
 6         }
 7         [HttpGet]
 8         public ActionResult CreateGraphics()
 9         {
10             Bitmap bmp = new Bitmap(1000, 800);
11             //画布
12             Graphics g = Graphics.FromImage(bmp);
13             //清除画布背景色,并填充指定色
14             g.Clear(Color.White);
15             //画矩形
16             g.DrawRectangle(new Pen(Color.Red), new Rectangle(0, 0, 600, 400));
17             //画刷
18             Brush bs = new SolidBrush(Color.Blue);
19             //填充扇形
20             g.FillPie(new SolidBrush(Color.Red), new Rectangle(100, 80, 200, 200), 0, 100);
21             g.FillPie(bs, new Rectangle(100, 80, 200, 200), 100, 100);
22             g.DrawPie(new Pen(bs), new Rectangle(100, 80, 200, 200), 200, 100);//画扇形
23             g.FillPie(new SolidBrush(Color.HotPink), new Rectangle(100, 80, 200, 200), 300, 60);
24             g.DrawString("A", new Font("Times New Roman", 16), new SolidBrush(Color.Black), 250, 210);
25             //抗锯齿
26             g.SmoothingMode = SmoothingMode.AntiAlias;
27             MemoryStream ms = new MemoryStream();
28             try
29             {
30                 bmp.Save(ms, ImageFormat.Gif);
31                 return File(ms.ToArray(), @"image/Gif");
32             }
33             catch (Exception)
34             {
35                 return null;
36             }
37         }
38 }
后台


@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div>
        <img src="/Bitmap/CreateGraphics" width="1000" height="800" />
    </div>
</body>
</html>

   效果图(好像有点简陋(╯▽╰ )):

  最后推荐一些前辈的总结(比我强太多了):

http://www.cnblogs.com/Jerry-Chou/archive/2012/03/20/2408064.html 

http://www.cnblogs.com/Jerry-Chou/archive/2012/03/21/2409590.html

http://www.cnblogs.com/beyond0309/archive/2008/04/15/1155003.html验证码也可以用这种方式生成

 

以上是关于c#中画图与保存的主要内容,如果未能解决你的问题,请参考以下文章

C# System.Drawing.Graphics 画图后,如何保存一个低质量的图片,一个占用空间较小的图片

scratch程序画图之后怎样保存成为jpg?

C# picturebox画直线 想把画出来的东西保存成图片

C# 生成chart图表的三种方式

微信小程序canvas画图,保存页面为海报

vc++6.0MFC画图如何保存为bmp格式