<h2>
小畫家
</h2>
<h3>程式要求:</h3>
1.使用功能表切換畫筆顏色
2.按下滑鼠開始畫線,放開停止畫線,可拖拉滑鼠繪製圖形
3.會比線條顏色是目前選擇的畫筆色彩
<h3>
介面設計
</h3>
使用PictureBox當作畫布
在頂部再放一個menustrip 來切換畫筆顏色
<h3>
我的作法:
</h3>
先設定畫筆的初始位置
```csharp
public Point start;
```
在讓畫筆的初始顏色定義為藍色
```csharp
private Pen pen = new Pen(Color.Blue, 2);
```
最後再把起始點設定好
```csharp
private Point start;
```
設置三個事件,分別為:MouseDown,MouseMove和MouseUp
我們要讓滑鼠左鍵按下後再移動滑鼠繪製線條
先設一個變數
```csharp
private bool drawing = false;
```
要讓他預設為false
然後在滑鼠按下的時候設為true
跟設定start的起始位置
```csharp
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
drawing = true;
start = e.Location;
}
```
如果MouseMove事件偵測到drawing == true
就在pictureBox上面建立一個Graphics 物件
並且使用 pictureBox1.CreateGraphics() 方法
讓他可以在pictureBox上畫畫
```csharp
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (drawing)
{
using (Graphics g = pictureBox1.CreateGraphics())
{
g.DrawLine(pen, start, e.Location);
start = e.Location;
}
}
}
```
如果滑鼠按鍵放開drawing == false
```csharp
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
drawing = false;
}
```
完整程式碼
```csharp=
public partial class Form1 : Form
{
private Pen pen;
private Point start;
private bool drawing = false;
public Form1()
{
InitializeComponent();
InitializePoint();
}
private void InitializePoint()
{
pen = new Pen(Color.Blue, 2);
}
private void 紅色ToolStripMenuItem_Click(object sender, EventArgs e)
{
紅色ToolStripMenuItem.Checked = true;
藍色ToolStripMenuItem.Checked = false;
綠色ToolStripMenuItem.Checked = false;
pen = new Pen(Color.Red, 2);
}
private void 藍色ToolStripMenuItem_Click(object sender, EventArgs e)
{
紅色ToolStripMenuItem.Checked = false;
藍色ToolStripMenuItem.Checked = true;
綠色ToolStripMenuItem.Checked = false;
pen = new Pen(Color.Blue, 2);
}
private void 綠色ToolStripMenuItem_Click(object sender, EventArgs e)
{
紅色ToolStripMenuItem.Checked = false;
藍色ToolStripMenuItem.Checked = false;
綠色ToolStripMenuItem.Checked = true;
pen = new Pen(Color.Green, 2);
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
drawing = true;
start = e.Location;
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (drawing)
{
using (Graphics g = pictureBox1.CreateGraphics())
{
g.DrawLine(pen, start, e.Location);
start = e.Location;
}
}
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
drawing = false;
}
}
```