Gobar

Gobar

Gobar

Gobar

Gobar

Minggu, 29 Maret 2015

Aplikasi Paint Sederhana

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


Tidak ada komentar:

Posting Komentar