制作一个画图十分简单,只需要用到一个picturebox(画图通用)控件,一个button控件(开始,停止画画,这个十分重要,可以防止勿画)
注意,在这里需要用到MouseMove,MouseDown和MouseUp,要在窗口加载的地方添加
this.pictureBox1.MouseDown += new MouseEventHandler(pictureBox1_MouseDown);
this.pictureBox1.MouseMove += new MouseEventHandler(pictureBox1_MouseMove);
this.pictureBox1.MouseUp += new MouseEventHandler(pictureBox1_MouseUp);
刚添加的时候可能会报错,但不用担心,后面写完程序后就不会了。
话不多说,直接上代码
Bitmap myImage;
int PBwidth;
int PBheight;
bool beginpain = false;
bool beginmove = false;
int currentxpos;
int currentypos;
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
if (beginPaint == true)
{
if (e.Button == MouseButtons.Left)
{
beginMove = true;
currentXpos = e.X;
currentYpos = e.Y;
}
}
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (beginMove)
{
Graphics g = Graphics.FromImage(myImage);
Pen myPen = new Pen(Color.Black, 2);
g.DrawLine(myPen, currentXpos, currentYpos, e.X, e.Y);
pictureBox1.Image = myImage;
g.Dispose();
currentYpos = e.Y;
currentXpos = e.X;
}
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
beginMove = false;
currentXpos = 0;
currentYpos = 0;
}
}
这里主要思路也就是当鼠标按下的时候记录坐标点,并在移动中在下一个移动点画直线,松开后结束,单位一部好的是可能并不会十分流畅。
如果说是要保存的话,就用myImage.Save保存(记得加路径)即可
其他的玩法:
可以设置这里的XY坐标交换,会出现意想不到的效果呦!
效果图如下:
当然,如果想要添加其他图形的话,可以直接去用GUI
语法格式如下:
椭圆:
public void DrawEllipse(Pen pen , int x , int y , int , width , int height)
参数 | 说明 |
---|---|
pen | Pen对象,上面已经设置过了 |
x | 椭圆左上角的x坐标 |
y | 椭圆左上角的y坐标 |
width | 椭圆的宽度 |
height | 椭圆的高度 |
除此之外还有矩形
public void DrawRectangle(Pen pen,int x , int y , int width , int height)
参数 | 说明 |
---|---|
pen | Pen对象,上面已经设置过了 |
x | 矩形左上角的x坐标 |
y | 矩形左上角的y坐标 |
width | 椭圆的宽度 |
height | 椭圆的高度 |
这样就可以搞出一个画板了!