天天看點

簡單的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;
            }