中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用C#怎么實現一個簡易畫圖板

發布時間:2021-04-19 16:28:40 來源:億速云 閱讀:368 作者:Leah 欄目:開發技術

本篇文章為大家展示了使用C#怎么實現一個簡易畫圖板,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

定義公共變量

用于多個窗體之間共同使用數據

public class TempData
    {
        //用于多個窗體共同使用的數據
            public static int size=5;
        public static SolidBrush solidBrush=new SolidBrush(Color.Black);
        public static Graphics p;
    }

繪圖需要畫筆和畫布

創建畫布對象

 bm = new Bitmap(panel1.Width, panel1.Height);
     panel1.CreateGraphics().DrawImage(bm, new Point(0, 0));

創建畫筆對象

   SolidBrush solidBrush=new SolidBrush(Color.Black);

實現對鼠標行為的捕捉

定義一個bool的變量paint,用于指示是否開始作畫,但其值為true時開始作畫,為false時結束作畫

鼠標左鍵按下則:使paint值變為true

private void panel1_MouseDown(object sender, MouseEventArgs e)
        {
            paint = true;//開始畫畫
        }

鼠標左鍵松開則:使paint值變為false

private void panel1_MouseUp(object sender, MouseEventArgs e)
        {
            paint = false;//結束畫畫
        }

繪制圖形

paint為true時

e.x、e.y用來獲取鼠標的坐標,便于在對應的地方進行繪制

用radioButton1.Checked(畫筆)進一步判斷是否選中畫筆,選中畫筆則在鼠標移動的位置畫上相應的線條

if (paint && radioButton1.Checked)
            {
                TempData.p.FillEllipse(TempData.solidBrush, e.X, e.Y, TempData.size, TempData.size);
                panel1.CreateGraphics().DrawImage(bm, new Point(0, 0));
            }

用radioButton2.Checked(橡皮)進一步判斷是否選中橡皮,選中橡皮則在鼠標移動的位置擦去相應的線條

if (paint && radioButton2.Checked)
            {
                TempData.p.FillEllipse(new SolidBrush(Color.White), e.X, e.Y, 30, 30);
                panel1.CreateGraphics().DrawImage(bm, new Point(0, 0));
            }

使用C#怎么實現一個簡易畫圖板

用兩個單選按鈕控件radioButton(只可以選擇其中一個)來分別表示畫筆和橡皮

paint為false時

不響應畫畫與擦除操作

鼠標按下左鍵且移動時:

private void panel1_MouseMove(object sender, MouseEventArgs e)
        {
            TempData.p = Graphics.FromImage(bm);//用bm來創建一個新的畫布
            if (paint && radioButton1.Checked)
            {
                TempData.p.FillEllipse(TempData.solidBrush, e.X, e.Y, TempData.size, TempData.size);
                panel1.CreateGraphics().DrawImage(bm, new Point(0, 0));
            }
            else if (paint && radioButton2.Checked)
            {
                TempData.p.FillEllipse(new SolidBrush(Color.White), e.X, e.Y, 30, 30);
                panel1.CreateGraphics().DrawImage(bm, new Point(0, 0));
            }
        }

畫筆粗細的選擇

使用C#怎么實現一個簡易畫圖板

使用單選按鈕控件實現用戶畫筆粗細的選擇

首先定義了一個類,里面包含公共的變量size,size即為畫筆的粗細

選擇不同的radioButton則對size賦不同的值,用if_else_語句實現

private void button1_Click(object sender, EventArgs e)
        {
            if (radioButton1.Checked)
            {
                MessageBox.Show("你選擇了小號畫筆", "信息提示", MessageBoxButtons.OK);
                TempData.size = 5;
            }
            else if (radioButton2.Checked)
            {
                MessageBox.Show("你選擇了中號畫筆", "信息提示", MessageBoxButtons.OK);
                TempData.size = 10;
            }
            else if (radioButton3.Checked)
            {
                MessageBox.Show("你選擇了大號畫筆", "信息提示", MessageBoxButtons.OK);
                TempData.size = 15;
            }
            else
            {
                MessageBox.Show("你選擇了刷子", "信息提示", MessageBoxButtons.OK);
                TempData.size = 20;
            }
            this.Close();//關閉當前窗口
        }

MessageBox.Show(“提示內容”, “提示框名稱”, 按鍵模式);用于展示提示內容

this.Close();用于關閉當前窗口

畫筆顏色的選擇

使用C#怎么實現一個簡易畫圖板

對顏色對話框的調用

用語句TempData.solidBrush = new SolidBrush(colorDialog1.Color);將選擇的顏色設置到畫筆中

private void 顏色ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            colorDialog1.ShowDialog();
            TempData.solidBrush = new SolidBrush(colorDialog1.Color);
        }

打開文件

對打開文件對話框的調用

可打開jpg格式的文件,由打開文件對話框的返回值確定是否執行將jpg設置為畫板的背景的功能

private void 打開ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            bool open = false;
            openFileDialog1.FileName = "";
            openFileDialog1.Filter = "JPG File(*.jpg)|*.JPG";
            DialogResult r = openFileDialog1.ShowDialog();//打開文件對話框并返回值
            if (r.ToString() == "OK") open = true;//ToString()用于將值轉化為其等價的字符串形式
            if (open)
            {
                panel1.BackgroundImage = Image.FromFile(openFileDialog1.FileName);//設置畫布的背景圖片
            }
        }

保存文件

對保存文件對話框的調用

用語句bm.Save(saveFileDialog1.FileName);將畫布bm上的內容存在指定位置存為jpg文件,saveFileDialog1.FileName為文件的名稱

 private void 保存ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            saveFileDialog1.Filter = "JPG File(*.jpg)|*.JPG";//設置保存的格式為jpg
            if(saveFileDialog1.ShowDialog()==System.Windows.Forms.DialogResult.OK)
            {
                bm.Save(saveFileDialog1.FileName);//直接將bm保存為jpg格式
            }   
        }

清空畫布

定義一個bool類型的變量clear用于指示是否將內容清空,當clear值為true時清空畫布,否則不清空

為了防止用戶操作失誤使得內容被清空,加上下面的代碼,當用戶按下確定鍵時才將clear改為true,即清空畫布

DialogResult r = MessageBox.Show("確定將清空畫布內容?", "提示", MessageBoxButtons.OKCancel);
            if (r.ToString() == "OK") clear = true;

清空畫布即用一張白色的畫布覆蓋之前全部內容

TempData.p.Clear(Color.White);
panel1.CreateGraphics().DrawImage(bm, new Point(0, 0));//重新繪制畫板

清空畫布完整代碼

private void 清空ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DialogResult r = MessageBox.Show("確定將清空畫布內容?", "提示", MessageBoxButtons.OKCancel);
            //DialogResult用于指示對話框中的返回值
            //后者返回值為OK、Cancel、Yes、No是由具體規定而定的
            if (r.ToString() == "OK") clear = true;//ToString()用于將值轉化為其等價的字符串形式
            if (clear)
            {
                TempData.p.Clear(Color.White);
                panel1.CreateGraphics().DrawImage(bm, new Point(0, 0));//重新繪制畫板
                clear = false;
            }
        }

上述內容就是使用C#怎么實現一個簡易畫圖板,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新宁县| 临漳县| 康保县| 平陆县| 岳阳市| 吉林市| 桐庐县| 嘉兴市| 赤城县| 福海县| 蓬安县| 郴州市| 图片| 封开县| 白沙| 琼海市| 杂多县| 含山县| 汤阴县| 克拉玛依市| 汪清县| 龙山县| 双峰县| 钦州市| 田林县| 甘孜县| 秀山| 昔阳县| 安平县| 建昌县| 霍州市| 凌源市| 邢台县| 毕节市| 邵阳市| 浦东新区| 宿迁市| 湟源县| 英德市| 宜黄县| 育儿|