一、基础知道
1、C#基础知识
需要基本了解C#语法,如变量的定义、程序流程、类的定义等。
2、windows窗体程序基本知识
需要基本了解窗体程序实现机制、事件、控件等。
3、GDI+基础知识
需要基本了解图像类、其属性和方法、相关的参数、画笔、画刷等。
二、实现原理
1、建立窗体
新建解决方案、项目,项目为windows窗体应用程序。
2、添加控件
在本画板中,添加了4个控件,3个按钮分别是选取颜色(Color)、控制画笔大小(Size)、清空(clear),1个颜色对话框(colorDialog)。
3、添加事件
(1)选取颜色点击事件:将用户选取的颜色赋给color颜色变量。
(2)控制画笔大小事件:使用了一个整形变量来存储画笔大小,每次点击Size按钮时都在增大2;当到达5后,则重置其大小为初始值1。
(3)清空事件:调用Clear()函数。
4、画线的原理
响应MouseDown事件,则开始画图;响应MouseUp事件,则结束画图;响应MouseMove事件,则执行画图。
三、代码实现
Program.sc
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace huatu
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
Form.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace huatu
{
public partial class Form1 : Form
{
private bool flag = false;
private Point start, middle;
private Color color = Color.Black;
private int size = 1;
Graphics g;
public Form1()
{
InitializeComponent();
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
flag = true;
start = new Point(e.X, e.Y);
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
flag = false;
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (flag)
{
middle = new Point(e.X, e.Y);
g = this.CreateGraphics();
Pen p=new Pen(color,size);
g.DrawLine(p, start, middle);
start = middle;
}
}
private void button1_Click(object sender, EventArgs e)
{
if (colorDialog1.ShowDialog() == DialogResult.OK)
{
color = colorDialog1.Color;
button1.ForeColor = color;
}
}
private void button2_Click(object sender, EventArgs e)
{
size += 2;
if (size > 5)
{
size = 1;
}
// button2.Font.Size = size;
button2.Text = "Size:" + size.ToString();
}
private void button3_Click(object sender, EventArgs e)
{
g.Clear(this.BackColor);
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
四、实例