天天看点

简单的c#winform画图工具

1首先创建一个form窗体 然后拖入pictureBox作为画板

2创建两个button按钮 一个为“开始画画 ” 一个“保存”

对于画板的创建 首先 我们得声明一些有关变量

Bitmap myImage;    //位图 用来存储画板的基础
        int PBwidth; //这个是  画板的宽度
        int PBheight;//这个是  画板的高度
        bool beginPain = false;//定义是否画板开启 初始化否
        bool beginMove = false;//定义是否开始移动画画 初始化否
        int currentXpos;//定义的一个变量 用来存储 移动中坐标的x值
        int currentYpos;//定义的一个变量 用来存储 移动中坐标的y值           

然后 我们要初始化beginPain和BeginMove在窗体初始化的时候

PBheight = pictureBox1.Height;
PBwidth = pictureBox1.Width;           

然后单击按钮button1的效果

if (button1.Text == "开始画画")
            {
                beginPain = true;
                button1.Text = "结束画画";
                myImage = new Bitmap(PBwidth, PBheight);//创建并初始化位图大小
                Graphics g = Graphics.FromImage(myImage);//将位图作为画板
                g.Clear(Color.White);// 初始化画板为白色
                pictureBox1.Image = myImage;//将初始化的图片赋值给pictureBox
            }
            else
            {
                beginPain = false;
                button1.Text = "开始画画";

            }           

这是左键单击pictureBox的效果

if (beginPain == true)
            {
                if (e.Button == MouseButtons.Left)//获取单击是否为鼠标左键
                {
                    beginMove = true;  
                    currentXpos = e.X; //获取单击的位置
                    currentYpos = e.Y;
                }
            }           

这是移动鼠标在pictureBox的效果

if (beginMove)  //判断是否移动
            {
                Graphics g = Graphics.FromImage(myImage); 
                Pen myPen = new Pen(Color.Red, 2);//画笔的初始
                g.DrawLine(myPen, currentXpos, currentYpos, e.X, e.Y);//画笔在画板上的操作
                pictureBox1.Image = myImage;//跟新图像
                g.Dispose();//释放画板资源
                currentYpos = e.Y;//跟新坐标
                currentXpos = e.X;
            }           

这是松开鼠标左键的效果

if (e.Button == MouseButtons.Left)  //这样 画画结束
            {
                beginMove = false;
                //currentXpos = 0;
                //currentYpos = 0;
            }           

这是保存按钮的操作

if (beginPain == true)   //判断是否在画画
            {
                SaveFileDialog sfd = new SaveFileDialog();  
                //sfd.InitialDirectory  这个属性可以初始化保存路径 但是没用这里
                if (sfd.ShowDialog() == DialogResult.OK)//ShowDialog()的话  如果结束掉该窗口  其他窗口无法操作
                {
                    myImage.Save(sfd.FileName + ".Jpeg", ImageFormat.Jpeg);//图像保存 格式是Jpeg   
                }
            }
            else
            {
                MessageBox.Show("请重新绘制图片");
                return;
            }