Simple Paint Application in C#





5.00/5 (7 votes)
In this Tip/Trick, I am going to show How to create Simple Paint Application in C#
In this Tip and Trick, I am going to show you How to create Mini Paint Application using C# Windows Form Application . I am going to show some basic features of Paint Application. Before starting, I Hope you have the Basic Knowledge of GDI+ Graphics Functionality. I have added comments in the Code so that you can easily understand the code.
Let's understand the Mini Paint Application:
using System; using System.Drawing; using System.Windows.Forms; namespace MiniPaint { public partial class Form1 : Form { public Form1() { InitializeComponent(); g = pnl_Draw.CreateGraphics(); } bool startPaint = false; Graphics g; //nullable int for storing Null value int? initX = null; int? initY = null; bool drawSquare = false; bool drawRectangle = false; bool drawCircle = false; //Event fired when the mouse pointer is moved over the Panel(pnl_Draw). private void pnl_Draw_MouseMove(object sender, MouseEventArgs e) { if(startPaint) { //Setting the Pen BackColor and line Width Pen p = new Pen(btn_PenColor.BackColor,float.Parse(cmb_PenSize.Text)); //Drawing the line. g.DrawLine(p, new Point(initX ?? e.X, initY ?? e.Y), new Point(e.X, e.Y)); initX = e.X; initY = e.Y; } } //Event Fired when the mouse pointer is over Panel and a mouse button is pressed private void pnl_Draw_MouseDown(object sender, MouseEventArgs e) { startPaint = true; if (drawSquare) { //Use Solid Brush for filling the graphic shapes SolidBrush sb = new SolidBrush(btn_PenColor.BackColor); //setting the width and height same for creating square. //Getting the width and Heigt value from Textbox(txt_ShapeSize) g.FillRectangle(sb, e.X, e.Y, int.Parse(txt_ShapeSize.Text), int.Parse(txt_ShapeSize.Text)); //setting startPaint and drawSquare value to false for creating one graphic on one click. startPaint = false; drawSquare = false; } if(drawRectangle) { SolidBrush sb = new SolidBrush(btn_PenColor.BackColor); //setting the width twice of the height g.FillRectangle(sb, e.X, e.Y, 2*int.Parse(txt_ShapeSize.Text), int.Parse(txt_ShapeSize.Text)); startPaint = false; drawRectangle = false; } if(drawCircle) { SolidBrush sb = new SolidBrush(btn_PenColor.BackColor); g.FillEllipse(sb, e.X, e.Y, int.Parse(txt_ShapeSize.Text), int.Parse(txt_ShapeSize.Text)); startPaint = false; drawCircle = false; } } //Fired when the mouse pointer is over the pnl_Draw and a mouse button is released. private void pnl_Draw_MouseUp(object sender, MouseEventArgs e) { startPaint = false; initX = null; initY = null; } //Button for Setting pen Color private void button1_Click(object sender, EventArgs e) { //Open Color Dialog and Set BackColor of btn_PenColor if user click on OK ColorDialog c = new ColorDialog(); if(c.ShowDialog()==DialogResult.OK) { btn_PenColor.BackColor = c.Color; } } //New private void newToolStripMenuItem_Click(object sender, EventArgs e) { //Clearing the graphics from the Panel(pnl_Draw) g.Clear(pnl_Draw.BackColor); //Setting the BackColor of pnl_draw and btn_CanvasColor to White on Clicking New under File Menu pnl_Draw.BackColor = Color.White; btn_CanvasColor.BackColor = Color.White; } //Setting the Canvas Color private void btn_CanvasColor_Click_1(object sender, EventArgs e) { ColorDialog c = new ColorDialog(); if(c.ShowDialog()==DialogResult.OK) { pnl_Draw.BackColor = c.Color; btn_CanvasColor.BackColor = c.Color; } } private void btn_Square_Click(object sender, EventArgs e) { drawSquare = true; } private void btn_Rectangle_Click(object sender, EventArgs e) { drawRectangle = true; } private void btn_Circle_Click(object sender, EventArgs e) { drawCircle = true; } //Exit under File Menu private void exitToolStripMenuItem_Click(object sender, EventArgs e) { if(MessageBox.Show("Do you want to Exit?","Exit",MessageBoxButtons.YesNo,MessageBoxIcon.Information)==DialogResult.Yes) { Application.Exit(); } } //About under Help Menu private void aboutMiniPaintToolStripMenuItem_Click(object sender, EventArgs e) { About a = new About(); a.ShowDialog(); } } }
Final Preview:
You can also Download the Source File. Hope you like it.
Thanks.