窗体绘图

如何实现在窗体控件上绘制图形呢?
首先我们需要创建“笔”和“纸”:
创建一个窗体
窗体绘图
在“Go”按钮里写点击事件,通过点击按钮来触发绘图。

  private void button1_Click(object sender, EventArgs e)
       {
           gDesktop = panel1.CreateGraphics();   //以pancl1为画板
           Pen myPen = new Pen(Color.Blue);   //创建画笔,颜色蓝色
           gDesktop.DrawLine(myPen, 20, 20, 200, 200);  //绘制两点形成直线(x1,x2,y1 y2);
       }

窗体绘图
同时也可以通过DrawLines()来绘制多边形。其参数Point[]是坐标点数组。
窗体绘图

 private void button1_Click(object sender, EventArgs e)
        {
            Pen myPen = new Pen(Color.Blue);
            Point[] myP = new Point[7];
            myP[0].X = 20; myP[0].Y = 200;
            myP[1].X = 80; myP[1].Y = 200;
            myP[2].X = 100; myP[2].Y = 240;
            myP[3].X = 80; myP[3].Y = 280;
            myP[4].X = 20; myP[4].Y = 280;
            myP[5].X = 0; myP[5].Y = 240;
            myP[6].X = 20; myP[6].Y = 200;
            gDesktop.DrawLines(myPen, myP);
        }

效果如图: 窗体绘图
但是有一点需要注意的是,如果绘制一个六边形,却要用到七个坐标点。因为最后一个坐标点需要与第一个坐标点相连接,否则就会出现图形不完整的情况。

除了基础的绘线之外,还有很多跟复杂的绘图方式。
窗体绘图
窗体绘图
窗体绘图
窗体绘图

除了将窗体控件作为画布外,还能通过句柄将整个电脑桌面作为画布哦

 [System.Runtime.InteropServices.DllImport("user32.dll")]
       public static extern int GetDesktopWindow();//句柄,外来方法
       Graphics grapHics;//画布

然后使用DrawIcon方法,将窗体程序的Icon绘制出来

 private void Form1_Load(object sender, EventArgs e)
       {
           Random myRandom = new Random();//创建一个随机数
           grapHics = Graphics.FromHwnd((IntPtr)GetDesktopWindow());//将电脑Window桌面窗体做为画布
           while (true)
           {
               grapHics.DrawImage(this.BackgroundImage, myRandom.Next(0, 1920), myRandom.Next(0, 1080));
               grapHics.Save();
           }

       }

这次我们将绘制写在窗体加载事件里,接下来你就会看到电脑桌面被窗体的Icon占领
(尝尝被360支配的恐惧吧!)
窗体绘图
也可以尝试绘制窗体的BackgroundImage
窗体绘图
又或者是绘制文字(DrawString
窗体绘图
是不是觉得很有趣?
发挥你的想象力和创意
去打造出你自己的绘制作品吧

相关文章: