• .NET中的GDI+


    GDIGraphics Device Interface.

     

    System. Windows. Shapes 命名空间

     

    Ellipse

    绘制一个椭圆。

    Line

    在两个点之间绘制一条直线。

    Path

    绘制一系列相互连接的直线和曲线。 直线和曲线维度通过Data属性声明,并且可以使用 Path 特定的 mini-language 或使用对象模型来指定。

    Polygon

    绘制一个多边形,它是形成闭合形状的一系列相互连接的直接。

    Polyline

    绘制一系列相互连接的直线。

    Rectangle

    绘制一个矩形形状,该形状可以具有笔画和填充。

    Shape

     EllipsePolygon  Rectangle之类的形状元素提供基类。

     

    来自 <https://msdn.microsoft.com/zh-cn/library/system.windows.shapes(v=vs.95).aspx>

    实例代码: 

    Graphics g = this.CreateGraphics(); 
    
    Pen pen = new Pen(Color.Red, 2); //笔画
    Brush brush = new SolidBrush(Color.Blue); //用来填充
    Font font = new Font("宋体", 25);//文字
    
    //绘制一个矩形形状,该形状可以具有笔画和填充。
    Rectangle rect = new Rectangle(20, 120, 100, 160);
    
     g.DrawLine(pen, 20, 100, 100, 100); //两个点的坐标(上、左;上、左)
    g.DrawRectangle(pen, rect);
    g.DrawString("GDI+", font, brush, 20, 20);//文字起始位置
    brush.Dispose(); font.Dispose(); pen.Dispose();
    g.Dispose();  //释放资源

    .netGDI的封装:

     

    Color的静态方法:

     

    FromArgb: 通过三原色构建Color对象;

    FromKnownColor:通过已知颜色构建Color对象;

    FromName:通过颜色名称来构建Color对象。

     

    Color temp1 = Color.Blue;
    
    Color temp2 = Color.FromArgb(0,0,255);
    
    Color temp3 = Color.FromName("blue");

     

    SizeSizeF

    表示绘制平面上的一个尺寸,一个为整数,一个为浮点数;

    Size sz1 = new Size(10,10);

     

    属性:Width: 表示宽度值,Height: 表示高度值;

     

    重载了加减、比较、赋值操作:

     Size sz1 = new Size(10,10);
    
     Size sz2 = sz1;            
    
     Size sz3 = sz1 + sz2;

    PointPointF:

    表示绘制平面上点的坐标,一个为整数,另外一个为浮点数;

    Point pt1 = new Point(10,10);

     

    重载了加减、比较、赋值操作;

     

    RectangleRectangleF

    绘制平面上的一个矩形区域

     

    GDI绘制函数图:

    void MainFormPaint(object sender, PaintEventArgs e)
            {
                //垂直坐标
                Graphics g = e.Graphics;
                PointF [] cur1 = new PointF[ 150 ]; //生成所需要的点
                
                //函数
                for( int i=0; i<cur1.Length; i++ )
                {
                    double x = (double)i/5;
                    double y = Math.Sin(x) * 3 + Math.Cos( 3*x );
                    cur1[i] = new PointF( (float)i, (float)( y*10+100 ));
                }
                //将点练成线
                g.DrawLines( Pens.Blue, cur1 );
              
                //极坐标
                PointF [] cur2 = new PointF[ 100 ];//生成所需要的点
                
                //函数
                for( int i=0; i<cur2.Length; i++ )
                {
                    double theta = Math.PI/50 * i;
                    double r = Math.Cos( theta * 16 );
                    cur2[i] = new PointF(
                        (float)( r * Math.Cos( theta ) *50 + 230 ),
                        (float)( r * Math.Sin( theta ) *50 + 100 ) );
                }
                g.DrawLines( Pens.Blue, cur2 );
            }

    效果:

     

  • 相关阅读:
    使用DirectX作渲染过程
    记于来北京两个星期
    添加 node mocha 测试模块
    for-of循环
    app-web 开发 追溯debug
    cmd关闭被占用的端口命令及教程详解
    vue使用element-ui的el-input监听不了键盘事件解决
    Nodejs 进阶:Express 常用中间件 body-parser 实现解析
    nodejs设置允许跨域
    nodejs 全局变量和全局对象
  • 原文地址:https://www.cnblogs.com/bincoding/p/4892347.html
Copyright © 2020-2023  润新知