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验证码也可以用这种方式生成

 

时间: 2024-11-10 08:32:38

C#画图——Graphics的相关文章

NET简单的一个画图程序

using System; using System.Drawing; //HttpUtility.UrlEncode /// <summary> ///Curve 的摘要说明 /// </summary> public class Curve { public Curve() { // //TODO: 在此处添加构造函数逻辑 // } /*******************************************************属性设置*************

java画图之初体验

1.实现画图程序所需的API类 JFrame JButton ActionListener              动作事件接口 ActionEvent                        动作事件对象类 获取按钮上的文字或者获取事件源对象 getActionCommand(); MouseListener                  鼠标事件接口 MouseEvent                       鼠标事件对象类              获取发生动作的坐标值

java画图之曲线拖动

目标:在窗体上按下鼠标按键.然后拖动鼠标,在按下和拖动之间绘制曲线 事件机制 事件源对象:窗体 事件监听方法:addMouseListener(MouseListener l);addMouseMotionListener(MouseMotionListener l); 事件接口(事件处理类):MouseListener,MouseMotionListener 实现步骤: 1.定义DrawListener事件处理类,该类实现MouseListener和MouseMotionListener鼠标事

java制作验证码

建立一个web工程 编写servlet,生成图像 package com.imooc; import java.awt.Color; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.http.HttpServlet

C# WinForm 为 RichTextBox 添加行号小技巧

在代码显示的时候,有行号会非常的方便舒服(可能是个人习惯). 这让我想到博客园的代码显示,添加行号居然是在每一行代码前添加数字,只能说是下下策,身为处女座的我对此很是不满,虽然曾经也这样想过.. 测试: 1 using System; 2 using System.IO; 3 using System.Collections.Generic; 4 using System.ComponentModel; 5 using System.Data; 6 using System.Drawing; 7

简单的小重绘

1.当我们改变窗体的大小或者最小化窗体后为什么窗体不消失呢? 原因是画布是在顶级容器中画出来的,而顶级容器(所有的组件)也都是由系统画出来的,窗体组件在改变大小后,原来的窗体就已经不存在了(组件会自动重新绘制,我们自己画的图就会消失),我们看到的窗体是新绘制出来的窗体. 2.怎么解决图形消失的问题呢?   1.定义图形类,该类用来存储图形的数据.   2.你每画一个图形,就需要实例化一个图形对象,图形对象就要存储在数组中.   3.你在哪一个组件上绘制图形,那么就需要重写该组件的重绘(paint

验证码的制作(一):使用servlet来实现验证码

使用servlet来实现验证码 下面让我们来说一下为什么在项目开发中要用到验证码,以及使用验证码会给我们的项目带来什么好处? 1.如果开发中不使用验证码会给项目带来那些危害: ①.如果对用户不断登录的话,可以破解用户密码 ②.对对某个网站创建账户 ③.对某个网站提交垃圾数据 ④.对某个网站刷票等一系列危害 2.在网上的可以看到其实验证码是通过动态获取图片以及图片中的内容不断变化的过程,下面让我们来说一下生成验证码用到了那些类,如下图: 1.BufferedImage图像数据缓冲区 2.Graph

JAVA入门到精通-第33讲-绘图技术.坦克大战1

    用的是Access数据库,安全性不够好,性能也不够强大:   躲在这里,坦克很少过来,做了一个随机数: 把得分的记录保存在数据库里面: SQLServer2005中型数据库:    (x,y)坐标:     800x600:     表示计算机屏幕上的每一行由800个点组成,共有600行:   共有480000个像素:   java绘图技术:   绘图一般在JPane上画: 覆盖JPanel的paintat方法 Graphics是一个图形画笔类,绘图的重要类,可以理解为一只画笔 supe

GDI+画图类Graphics的使用

一:基础定义 #region 定义线尾.线头为箭头.字体和笔刷 Pen p = new Pen(Color.Black, 1);//定义画笔 蓝色,宽度为1(坐标显示颜色) p.EndCap = LineCap.ArrowAnchor;//定义线尾的样式为箭头 Pen pk = new Pen(Color.Black, 1);//定义画笔 黑色,宽度为1(坐标显示颜色) Pen pbl = new Pen(Color.Red,1); pbl.EndCap = LineCap.ArrowAncho