Assalammualaikum Wr.Wb
Welcome to my blog……
Kembali lagi dengan
saya Gobar di Catatan Mungil. Pada kesempatan kali ini saya ingin
memberikan sedikit tutorial mengenai pembuatan sebuah aplikasi Paint sederhana menggunakan bahasa pemrograman C#.
Berikut ini adalah
tampilan awal dari program saya ( Form1) :
Pada Form diatas,
program hanya menjalankan perintah Loading saja yang ditampilkan menggunakan
sebuah ProgressBar, coding untuk Form1 adalah seperti dibawah ini :
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 MyPaint
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void
timer1_Tick(object sender, EventArgs e)
{
if (progressBar1.Value <= 100)
{
progressBar1.Value += 1;
}
if (progressBar1.Value == 100)
{
timer1.Stop(); //Menonaktifkan timer1
Form2 Gobar = new Form2(); //Memanggil Form2
Gobar.Show(); //Menampilkan
ilkan objek baru
this.Hide(); //Menyembunyikan
foam2
}
}
}
}
Kemudian, dibawah ini adalah contoh
tampilan MyPaint (Form2) yang saya buat :
Pada program paint sederhana diatas, kita
dapat menggambar 4 buah bentuk, yaitu : Garis(Line), Lingkaran(Circle),
Setengah lingkaran(Arc), dan Kotak(Rectangle). Kemudian kita dapan memilih
jenis warna sesuai yang kita inginkan, lalu saya juga memberikan opsi Hapus,
Save picture, dan tombol mengatur ketebalan garis (Menggunakan TrackBar), untuk
coding nya bisa anda lihat seperti dibawah ini :
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;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
namespace MyPaint
{
public partial class Form2 : Form
{
private Graphics
paint;
private Boolean
start;
private Point
titik1, titik2;
private Color
grwarna, bgwarna;
private int x, y,
Length, tebal, tool;
double Z;
private Point[]
titik = new Point[4];
private Bitmap bmp
= null;
private Bitmap
sbitmap = null;
public Form2()
{
InitializeComponent();
}
private void
Form2_Load(object sender, EventArgs e)
{
paint = CreateGraphics();
bgwarna = Color.White;
inisial();
}
void inisial()
{
//inisial drawing
bmp = new Bitmap(Panel.Width,
Panel.Height);
paint = Graphics.FromImage(bmp);
//memberi default warna panel adalah putih
Panel.BackColor = bgwarna;
//default warna garis adalah hitam
grwarna = Color.Black;
//default nilai tebal garis
_tebal.Value = 0;
tebal = 1; //set nilai tebal awal
paint.Clear(bgwarna);
Panel.BackgroundImage = null;
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
}
void jarak()
{
x
= titik2.X - titik1.X;
y
= titik2.Y - titik1.Y;
Coor.Text = "X = " +
x.ToString() + ", Y = " + y.ToString();
}
void info()
{
x
= titik2.X - titik1.X;
y
= titik2.Y - titik1.Y;
Z
= Math.Pow(x, 2) + Math.Pow(y,
2);
Length = Convert.ToInt32(Math.Sqrt(Z));
textBox1.Text = x.ToString();
textBox2.Text = y.ToString();
textBox3.Text = Length.ToString();
}
void save()
{
sbitmap = bmp.Clone(new Rectangle(0, 0, Panel.Width, Panel.Height),
bmp.PixelFormat);
Panel.BackgroundImage = sbitmap;
}
private void
_tebal_Scroll(object sender, EventArgs e)
{
tebal = _tebal.Value * 2;
}
private void
_drawing_Paint(object sender, PaintEventArgs e)
{
Graphics gdraw = e.Graphics;
jarak();
if (start)
{
switch (tool)
{
case 1://line
gdraw.DrawLine(new Pen(grwarna,
tebal), titik1, titik2);
break;
case 2://circle
gdraw.DrawEllipse(new Pen(grwarna,
tebal), new Rectangle(titik1.X,
titik1.Y, x, y));
break;
case 3://arc
if (x > 0 && y > 0)
{
gdraw.DrawArc(new Pen(grwarna,
tebal), titik1.X, titik2.Y, x, y, 180, -180);
}
break;
case 4://rectangle
Point[] rect = { titik[0], titik[1], titik[2], titik[3] };
gdraw.DrawPolygon(new Pen(grwarna,
tebal), rect);
break;
case 5://eraser
gdraw.FillEllipse(new SolidBrush(Color.White), titik2.X, titik2.Y, tebal, tebal);
break;
}
}
}
private void
_drawing_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
titik1.X = e.X;
titik1.Y = e.Y;
start = true;
}
}
private void
_drawing_MouseMove(object sender, MouseEventArgs e)
{
titik2.X = e.X;
titik2.Y = e.Y;
jarak();
if (start)
{
this.Refresh();
if (tool == 4) //Untuk Rectangle
{
jarak();
titik[3] = new Point(titik1.X,
titik1.Y);
titik[2] = new Point(titik2.X,
titik1.Y);
titik[1] = new Point(titik2.X,
titik2.Y);
titik[0] = new Point(titik1.X,
titik2.Y);
}
if (tool == 5)
{
paint.FillEllipse(new SolidBrush(Color.White),
titik2.X, titik2.Y, tebal, tebal);
}
}
}
private void
_drawing_MouseUp(object sender, MouseEventArgs e)
{
if (start)
{
switch (tool)
{
case 1://line
jarak();
paint.DrawLine(new Pen(grwarna,
tebal), titik1, titik2);
break;
case 2://circle
jarak();
paint.DrawEllipse(new Pen(grwarna,
tebal), new Rectangle(titik1.X,
titik1.Y, x, y));
break;
case 3://arc
jarak();
if (x > 0 && y > 0)
{
paint.DrawArc(new Pen(grwarna,
tebal), titik1.X, titik2.Y, x, y, 180, -180);
}
break;
case 4://rectangle
jarak();
Point[] rect = { titik[0], titik[1], titik[2], titik[3] };
paint.DrawPolygon(new Pen(grwarna,
tebal), rect);
break;
case 5://eraser
paint.FillEllipse(new SolidBrush(Color.White), titik2.X, titik2.Y, tebal, tebal);
break;
}
}
start = false;
info();
save();
}
private void t_line_Click(object
sender, EventArgs e)
{
tool = 1;
}
private void
t_circle_Click(object sender, EventArgs e)
{
tool = 2;
}
private void
t_arc_Click(object sender, EventArgs e)
{
tool = 3;
}
private void
t_rect_Click(object sender, EventArgs e)
{
tool = 4;
}
private void
c1_Click(object sender, EventArgs e)
{
grwarna = c1.BackColor;
}
private void
c2_Click(object sender, EventArgs e)
{
grwarna = c2.BackColor;
}
private void
c3_Click(object sender, EventArgs e)
{
grwarna = c3.BackColor;
}
private void
c4_Click(object sender, EventArgs e)
{
grwarna = c4.BackColor;
}
private void
c5_Click(object sender, EventArgs e)
{
grwarna = c5.BackColor;
}
private void
c6_Click(object sender, EventArgs e)
{
grwarna = c6.BackColor;
}
private void
c7_Click(object sender, EventArgs e)
{
grwarna = c7.BackColor;
}
private void
c8_Click(object sender, EventArgs e)
{
grwarna = c8.BackColor;
}
private void
browse_color_Click(object sender, EventArgs e)
{
ColorDialog Costom = new
ColorDialog();
if (Costom.ShowDialog() == DialogResult.OK)
{
grwarna = Costom.Color;
curr_color.BackColor = grwarna;
}
}
private void
curr_color_Click(object sender, EventArgs e)
{
grwarna = curr_color.BackColor;
}
private void
newToolStripMenuItem_Click(object sender, EventArgs e)
{
inisial();
}
private void
saveToolStripMenuItem_Click(object sender, EventArgs e)
{
saveFileDialog1.Filter = "JPeg
Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif";
saveFileDialog1.Title = "Simpan";
saveFileDialog1.ShowDialog();
string file = saveFileDialog1.FileName;
bmp.Save(file);
}
private void exitToolStripMenuItem_Click(object sender, EventArgs
e)
{
Environment.Exit(0);
}
private void
_clear_Click(object sender, EventArgs e)
{
inisial();
}
private void
_delete_Click(object sender, EventArgs e)
{
tool = 5;
}
private void
timer1_Tick_1(object sender, EventArgs e)
{
string a, b, c;
a
= label4.Text;
b
= a.Substring(a.Length - 1, 1);
c = a.Substring(0, a.Length - 1);
label4.Text = b + c;
}
}
}
Nahhh...,, Setelah memastikan coding berpadu
dengan baik dengan desain tampilan, maka tampilan setelah di RUN akan seperti
dibawah ini :
Baiklah…,, Demikian sedeikit penjelasan yang
dapat saya sampaikan, jika ada kesalahan saya mohon dimaafkan. semoga ini
bermanfaat :)
Untuk lebih jelasnya,
silahkan klik video tutorial dibawah ini :
Nantikan terus
postingan-postingan saya selanjutnya di
Wassalammualaikum Wr.Wb
Terima Kasih