窗体绘图
如何实现在窗体控件上绘制图形呢?
首先我们需要创建“笔”和“纸”:
创建一个窗体
在“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)
是不是觉得很有趣?
发挥你的想象力和创意
去打造出你自己的绘制作品吧