使用SolidBrush 单色画笔

Bitmap bitmap = new Bitmap(800, 600);
            Graphics graphics = Graphics.FromImage(bitmap);
            graphics.Clear(Color.White);
            SolidBrush mySolidBrush = new SolidBrush(Color.Yellow);
            graphics.FillEllipse(mySolidBrush, 70, 20, 100, 50);
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
            Response.ClearContent();
            Response.ContentType = "image/Gif";
            Response.BinaryWrite(ms.ToArray());

img派生类的对象->画布->清理画布->声明画笔->画椭圆->把img存到内存流中->二进制数组从服务器发送到浏览器上

使用HatchBrush绘制简单图案

Bitmap bitmap = new Bitmap(200, 100);
            Graphics graphics = Graphics.FromImage(bitmap);
            graphics.Clear(Color.White);
            HatchBrush myhatchBrush = new HatchBrush(HatchStyle.BackwardDiagonal, Color.Green, Color.Orange);
            graphics.FillEllipse(myhatchBrush, 0, 0, 200, 100);
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
            Response.ClearContent();
            Response.ContentType = "image/Jpeg";
            Response.BinaryWrite(ms.ToArray());

img派生类的对象->画布->清理画布->声明画笔->画椭圆->把img存到内存流中->二进制数组从服务器发送到浏览器上

使用TextureBrush类绘制复杂图案

     Bitmap bitmap = new Bitmap(400, 200);
            Graphics graphics = Graphics.FromImage(bitmap);
            graphics.Clear(Color.White);
            TextureBrush myTextureBrush = new TextureBrush(System.Drawing.Image.FromFile(Server.MapPath("~/4.jpg")));
            graphics.FillEllipse(myTextureBrush, 0, 0, 400, 200);
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
            Response.ClearContent();
            Response.ContentType = "image/Jpeg";
            Response.BinaryWrite(ms.ToArray());

使用LinearGradientBrush类定义现行渐变

     Bitmap bitmap = new Bitmap(200, 100);
            Graphics graphics = Graphics.FromImage(bitmap);
            graphics.Clear(Color.White);
            Rectangle recctangle = new Rectangle(0, 0, 200, 100);
            LinearGradientBrush myLinearGradientBrush = new LinearGradientBrush(recctangle, Color.White, Color.Green, LinearGradientMode.ForwardDiagonal);
            graphics.FillRectangle(myLinearGradientBrush, 0, 0, 200, 100);
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
            Response.ClearContent();
            Response.ContentType = "image/Jpeg";
            Response.BinaryWrite(ms.ToArray());

img派生类的对象->画布->清理画布->声明矩形->声明画笔->画矩形->把img存到内存流中->二进制数组从服务器发送到浏览器上

使用PathGradientBrush 类 实现彩色渐变

Bitmap bit = new Bitmap(400, 200);
            Graphics g = Graphics.FromImage(bit);
            g.Clear(Color.White);
            Point centerPoint = new Point(100, 100);
            int R = 100;
            GraphicsPath path = new GraphicsPath();
            path.AddEllipse(centerPoint.X - R, centerPoint.Y - R, 2 * R, 2 * R);
            PathGradientBrush myPathGradientBrush = new PathGradientBrush(path);
            //指定路径中心点
            myPathGradientBrush.CenterPoint = centerPoint;
            //指定路径中心点的颜色
            myPathGradientBrush.CenterColor = Color.DarkGreen;
            //Color类型的数组指定与路径上每个顶点对应的颜色
            myPathGradientBrush.SurroundColors = new Color[] { Color.Gold };
            g.FillEllipse(myPathGradientBrush, centerPoint.X - R, centerPoint.Y - R, 2 * R, 2 * R);
            centerPoint = new Point(300, 100);
            R = 33;
            path = new GraphicsPath();
            path.AddEllipse(centerPoint.X - R, centerPoint.Y - R, 2 * R, 2 * R);
            path.AddEllipse(centerPoint.X - 2 * R, centerPoint.Y - 2 * R, 4 * R, 4 * R);
            path.AddEllipse(centerPoint.X - 3 * R, centerPoint.Y - 3 * R, 6 * R, 6 * R);
            myPathGradientBrush = new PathGradientBrush(path);
            myPathGradientBrush.CenterPoint = centerPoint;
            myPathGradientBrush.CenterColor = Color.Gold;
            myPathGradientBrush.SurroundColors = new Color[] { Color.Black, Color.Blue, Color.DarkGreen };
            g.FillPath(myPathGradientBrush, path);
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            bit.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
            Response.ClearContent();
            Response.ContentType = "image/Jpeg";
            Response.BinaryWrite(ms.ToArray());

绘制直线DrawLines

 Pen pen = new Pen (Color.Black,3);

Point[] points={new Point(10,10),new Point(10,100),new Point(200,50),new Point(260,120)};

g.DradLines(pen,points);

绘制矩形Rectangle

1)

Rectangle rect= new Rectangle(0,0,80,50);

2)

Pen pen = new Pen (Color.Black,3);

Rectangles[] rects={new Rectangle(10,10,100,200),new Rectangle(100,200,250,50),new Rectangle(300,10,50,100)}

g.DrawRectangles(pen,rects);

绘制椭圆

DrawEllipse(Pen pen,Rectangle rect);

DrawEllipse(Pen pen,Int x,Int y,int width,int height);

绘制圆弧

DrawArc(Pen pen,Rectangle rec,float starAngle,float sweepAngle)

DrawArc(Pen pen,int x,int y,int width,int height,int startAngle,int sweepAngle)

绘制扇形

DrawPie

画直线

1)public void DrawLine(Pen pen,int x1,int y1,int x2,int y2)

2)public void DrawLine(Pen pen,Point pt1,Point pt2)

画矩形

DrawRectangle

画椭圆

DrawEllipse

画圆弧

DrawArc

画扇形

DrawPie

多边形

Graphics ghs = Graphics.FromImage(bitmap);
            ghs.Clear(Color.White);
            Pen myPen = new Pen(Color.Black, 3);
            Point point1 = new Point(80, 20);
            Point point2 = new Point(40, 50);
            Point point3 = new Point(80, 80);
            Point point4 = new Point(160, 80);
            Point point5 = new Point(200, 50);
            Point point6 = new Point(160, 20);
            Point[] myPoints = { point1, point2, point3, point4, point5, point6 };
            ghs.DrawPolygon(myPen, myPoints);

柱状图(投票例子):

protected void Page_Load(object sender, EventArgs e)
        {
            int Sum = 100;
            int v1 = 12;
            int v2 = 20;
            int v3 = 50;
            int v4 = 15;
            float p1 = 100 * Convert.ToSingle(v1) / Convert.ToSingle(Sum);
            float p2 = 100 * Convert.ToSingle(v2) / Convert.ToSingle(Sum);
            float p3 = 100 * Convert.ToSingle(v3) / Convert.ToSingle(Sum);
            float p4 = 100 * Convert.ToSingle(v4) / Convert.ToSingle(Sum);
            int width = 300, height = 300;//宽度和高度
            Bitmap bitmap = new Bitmap(width, height);
            Graphics g = Graphics.FromImage(bitmap);
            try
            {
                g.Clear(Color.White);
                //创建6个brush对象 ,用于填充颜色
                Brush brush1 = new SolidBrush(Color.White);
                Brush brush2 = new SolidBrush(Color.Black);
                Brush brush3 = new SolidBrush(Color.Red);
                Brush brush4 = new SolidBrush(Color.Green);
                Brush brush5 = new SolidBrush(Color.Orange);
                Brush brush6 = new SolidBrush(Color.DarkBlue);
                //创建连个Font对象,用于设置字体
                Font font1 = new Font("Courier New", 16, FontStyle.Bold);
                Font font2 = new Font("Courier New", 8);
                g.FillRectangle(brush1, 0, 0, width, height);
                g.DrawString("投票结果", font1, brush2, new Point(90, 20));
                //设置坐标
                Point point1 = new Point(70, 50);
                Point point2 = new Point(230, 50);
                g.DrawLine(new Pen(Color.Black), point1, point2);
                //设置文字
                g.DrawString("文字111", font2, brush2, new Point(10, 80));
                g.DrawString("文字222", font2, brush2, new Point(32, 110));
                g.DrawString("文字333", font2, brush2, new Point(32, 140));
                g.DrawString("文字444", font2, brush2, new Point(54, 170));
                //绘制柱状图
                g.FillRectangle(brush3, 95, 80, p1, 17);
                g.FillRectangle(brush4, 95, 110, p2, 17);
                g.FillRectangle(brush5, 95, 140, p3, 17);
                g.FillRectangle(brush6, 95, 170, p4, 17);
                //绘制所有选项的票数显示
                g.DrawRectangle(new Pen(Color.Green), 10, 210, 280, 80);//绘制范围框
                g.DrawString("文字111" + v1.ToString() + "票", font2, brush2, new Point(15, 220));
                g.DrawString("文字222" + v2.ToString() + "票", font2, brush2, new Point(150, 220));
                g.DrawString("文字333" + v3.ToString() + "票", font2, brush2, new Point(15, 260));
                g.DrawString("文字444" + v4.ToString() + "票", font2, brush2, new Point(150, 260));
                System.IO.MemoryStream ms = new System.IO.MemoryStream();
                bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                Response.ClearContent();
                Response.ContentType = "image/Jpeg";
                Response.BinaryWrite(ms.ToArray());
            }
            catch (Exception ex)
            {
            }
        }

GDI+(Graphics Device Interface)例子的更多相关文章

  1. GDI+(Graphics Device Interface)

    1创建画布(创建Graphics对象) Bitmap bitmap = new Bitmap(80,80); Graphics g=Graphics.FromImage(bitmap); 2创建Pen ...

  2. [转]C#中基于GDI+(Graphics)图像处理系列之前言

    直接给出原文链接吧: C#中基于GDI+(Graphics)图像处理系列之前言 链接:https://pan.baidu.com/s/1zm5TCOHqkqEfiLZuqO0UMA 提取码:qz0h

  3. day20 GUI(Graphics User Interface)

    顶层容器:JWindow.JFrame.JDialge.JAsplet JFrame,默认布局是边界布局 JFrame的内容面板是:Container. 面板容器:JPanel,默认布局是流布局. 布 ...

  4. C# GDI graphics.DrawImage 的参数问题

    graphics.DrawImage(imageSource, new System.Drawing.Point[] { ,), , ), , ), } ); graphics.DrawImage(i ...

  5. C#中基于GDI+(Graphics)图像处理系列

    https://blog.csdn.net/lhtzbj12/article/details/54024821

  6. 超全面的.NET GDI+图形图像编程教程

    本篇主题内容是.NET GDI+图形图像编程系列的教程,不要被这个滚动条吓到,为了查找方便,我没有分开写,上面加了目录了,而且很多都是源码和图片~ (*^_^*) 本人也为了学习深刻,另一方面也是为了 ...

  7. [转]超全面的.NET GDI+图形图像编程教程

    本篇主题内容是.NET GDI+图形图像编程系列的教程,不要被这个滚动条吓到,为了查找方便,我没有分开写,上面加了目录了,而且很多都是源码和图片~ GDI+绘图基础 编写图形程序时需要使用GDI(Gr ...

  8. 【笨嘴拙舌WINDOWS】GDI(1)

    GDI:Graphics Device Interface 图形设备接口. 操作系统从命令行界面到图形界面的过度是施乐公司实验室对计算机普及作出的不可估量的贡献,苹果公司乔布斯与微软公司比尔盖茨对其的 ...

  9. Winform GDI+

    什么是GDI+ GDI (Graphics Device Interface), 是属于绘图方面的 API (Application Programming Interface). 因为应用程序不能直 ...

随机推荐

  1. HTML5 Canvas图像放大、移动实例1

    1.前台代码 <canvas id="canvasOne" class="myCanvas" width="500" height=& ...

  2. Go语言之异常处理

    在编写Go语言代码的时候,我们应该习惯使用error类型值来表明非正常的状态.作为惯用法,在Go语言标准库代码包中的很多函数和方法也会以返回error类型值来表明错误状态及其详细信息. error是一 ...

  3. Vim的snipMate插件

    介绍终于发现了一个插件,对于Vim下代码块的自动补全支持的很好.给大家推荐snipMate. snipMate可以帮助您在vim上实现类似Textmate的功能,自动代码块的能力非常强大,而且代码块是 ...

  4. Mysql中natural join和inner join的区别

    假设有如下两个表TableA,TableB TableA TableB Column1 Column2 Column1 Column3 1 2 1 3 TableA的Column1列名和TableB的 ...

  5. Hadoop学习历程(五、真正的分布式系统搭建)

    之前都是单节点进行的操作与测试,现在进行真正的多节点系统搭建 1. 准备系统与配置 共准备4台机器搭建Hadoop集群.基于CentOS6.2,jdk1.6.0_31,Hadoop2.2.0版本 19 ...

  6. CSS太阳月亮地球三角恋旋转效果

    纯粹玩一下,好像没有什么实际的卵用,but,纯玩买不了上当,纯玩买不了受骗........ 地月旋转的一个css效果,无聊玩玩,可以复制到记事本试试 <!DOCTYPE html>< ...

  7. CSAPP--优化程序性能

    一.编写高效的程序: 1.选择合适的算法和数据结构. 2.编写出编译器能够有效优化以转换为高效可执行的源代码. 3.并行计算.当然重点还是第一个,良好的算法和数据结构大大减小了程序的时间复杂度. 二. ...

  8. 钢管下料问题(钢管用量最少)Lingo求解

    大家好,我是小鸭酱,博客地址为:http://www.cnblogs.com/xiaoyajiang !钢管下料问题1(钢管用量最少) 题目: 钢管原料   每根19m 客户需求   4m   50根 ...

  9. cf C. Dima and Containers

    http://codeforces.com/contest/358/problem/C 将最大的放在stack里面,第二大的放在queue中,第三大的放在deck里面.然后模拟就可以了. #inclu ...

  10. CCI_chapter 8 Recurision

    8.1 水题 8.2 Imagine a robot sitting on the upper left hand corner of an NxN grid The robot can only m ...