zoukankan      html  css  js  c++  java
  • GDI+(Graphics Device Interface)例子

    使用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)
                {
                }
            }

  • 相关阅读:
    一句话解释各种虚拟币的用途
    php 网站301重定向设置代码实战案例
    seo网页加速技术,预加载 DNS Prefetching 详解
    AI赌神称霸德扑的秘密,刚刚被《科学》“曝光”了
    java实现 HTTP/HTTPS请求绕过证书检测代码实现
    pyspider源码解读--调度器scheduler.py
    pyspider操作千万级库,pyspider在对接量级较大库的策略
    尼克《人工智能简史》谈人工智能的历史、现实与未来
    CentOS7使用yum命令安装Java1.8
    php ci nginx 伪静态rewrite配置方法
  • 原文地址:https://www.cnblogs.com/handsomer/p/4151403.html
Copyright © 2011-2022 走看看