• C# winfrom 简单绘图GDI+


      最近比较闲,无聊就瞎看了一些小玩意。winfrom虽说现在用的除了固定的那些,基本都不会用了。不巧的事,我就在这些固定那就中里面。

      说道绘图GDI+我就简单说一下:

        GDI+:Graphics Device Interface Plus也就是图形设备接口,提供了各种丰富的图形图像处理功能;在C#.NET中,使用GDI+处理二维(2D)的图形和图像,使用DirectX处理三维(3D)的图形图像,图形图像处理用到的主要命名空间是System . Drawing:提供了对GDI+基本图形功能的访问,主要有Graphics类、Bitmap类、从Brush类继承的类、Font类、Icon类、Image类、Pen类、Color类等.

      大概了解了什么是GDI+后,我们来看一下绘图要用到的主要工具,要画图,肯定要画板吧,在C#中画板可以通过Graphics这个类来创建,有了画板,总得弄个笔什么之类的吧,不然怎么画呀,在c#中我们可以用Pen,Brush类来实现类似功能.颜料颜色则自然是用Color类解决了.

      有了工具,接下来就好说了,在vs中建一个完成您from窗体,至于命名自己想吧(在这我使用vs2013写的)

     1、准备画板

        创建画板有三种方式(大家可以自己试试,至于我使用的是第一种)

          A: 在窗体或控件的Paint事件中直接引用Graphics对象 
          B: 利用窗体或某个控件的CreateGraphics方法
          C: 从继承自图像的任何对象创建Graphics对象   

    1 private void Form1_Paint(object sender, PaintEventArgs e)
    2         {
    3             Graphics g = e.Graphics;//创建画板(这里是直接写在Form窗体上了)
    4         }

      2、准备画笔 

    1         private void Form1_Paint(object sender, PaintEventArgs e)
    2         {
    3             Graphics g = e.Graphics;//创建画板(这里是直接写在Form窗体上了)
    4 
    5             Pen p1 = new Pen(Color.Red, 8);//定义了一个绿色,宽度为3的画笔
    6         } 

      3、开始你的创作(我这里简单的做了一个五环的小旗子)

     1 private void Form1_Paint(object sender, PaintEventArgs e)
     2         {
     3             Graphics g = e.Graphics;//创建画板(这里是直接写在Form窗体上了)
     4 
     5             //五环
     6             Pen p1 = new Pen(Color.Red, 8);//定义了一个绿色,宽度为3的画笔
     7             Pen p2 = new Pen(Color.Blue, 8);
     8             Pen p3 = new Pen(Color.Black, 8);
     9             Pen p4 = new Pen(Color.Yellow, 8);
    10             Pen p5 = new Pen(Color.Green, 8);
    11             g.DrawArc(p1, 85, 75, 125, 125, 1500, 1500);//用p1画笔画出了一个园
    12             g.DrawArc(p2, 210, 75, 125, 125, 1500, 1500);
    13             g.DrawArc(p3, 335, 75, 125, 125, 1500, 1500);
    14             g.DrawArc(p4, 148, 162, 125, 125, 1500, 1500);
    15             g.DrawArc(p5, 272, 162, 125, 125, 1500, 1500);
    16 
    17             //小旗子
    18             Pen p6 = new Pen(Color.Red, 15);
    19             g.DrawLine(p6, 20, 20, 20, 1000);
    20             g.DrawLine(p6, 600, 63, 600, 376);
    21 
    22             Pen p7 = new Pen(Color.Red, 15);
    23             Point d1 = new Point(16, 24);
    24             Point d2 = new Point(200, 60);
    25             Point d3 = new Point(350, 5);
    26             Point d4 = new Point(600, 70);
    27 
    28             Point d5 = new Point(20, 320);
    29             Point d6 = new Point(200, 360);
    30             Point d7 = new Point(350, 305);
    31             Point d8 = new Point(600, 370);
    32 
    33             g.DrawBezier(p7, d1, d2, d3, d4);//花出一条流水似的线
    34             g.DrawBezier(p7, d5, d6, d7, d8);
    35         }

      4、运行后的实际效果

      

      尴尬,因为画的比较大,本人在画画也没太大天赋,大伙就凑合着看吧

    版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

    作者:黯淡の青春    博客地址:http://www.cnblogs.com/wuwangqianxun/

    本人也是初学者,入门不久,大家相互切磋,就当娱乐
  • 相关阅读:
    UI: 多窗口
    UI: 标题栏
    控件 UI: 字体的自动继承的特性, Style, ControlTemplate
    控件 UI: VisualState, VisualStateManager, 控件的默认 UI
    控件 UI: StateTrigger
    atoi、stoi、strtoi区别
    python下载IGS观测数据
    稳健估计
    间接平差程序实现
    android中的文件操作详解以及内部存储和外部存储(转载)
  • 原文地址:https://www.cnblogs.com/wuwangqianxun/p/7249955.html
Copyright © 2020-2023  润新知