Saturday, March 28, 2015

PRAKTIKUM V – Graphics dan TUGAS Grapichs

Assalamualaikum WR.WB, kali ini pembahasan kita adalah:

GRAPHICS


I.             Tujuan

v  Mempelajari pemakaian Graphics di SharpDevelop
v  Mengetahui kegunaan Graphics di SharpDevelop
v  Dapat mengunakan Graphics dalam aplikasi windows sederhana

II.           Dasar Teori

Mouse adalah salah satu input komputer yang sangat penting. Mouse sangat dibutuhkan untuk berinteraksi dengan GUI aplikasi Windows. Dengan mouse, user dapat mengarahkan kursor, menge-klik maupun menge-drag sebuah object. Menekan, melepaskan tombol mouse maupun menggerakkan kursor mouse akan menghasilkan event. Pada praktikum ini kita mencoba memanfaatkan event-event mouse tersebut untuk menggambar grafik. Untuk menggambar pada form, atau object lain sebagai base menggambar, kita akan menggunakan object Graphics. Di dalam object ini terdapat beberapa method untuk menggambar text, garis, persegi panjang dan elips.


III.         Praktikum

Pertama-tama kita harus mendeklarasikan object Graphics, dan kita letakkan sebagai global.

private Graphics objGraphic;

Kemudian baru kita buat instance object-nya. Untuk class Graphics, kita tidak bisa mendeklarasikan lalu langsung membuat instancenya. Karena method CreateGraphics tidak bisa digunakan langsung ketika kita mendeklarasikan Graphics. Oleh karena itu, untuk membuat instance object, kita lakukan di event FormLoad.

objGraphic = CreateGraphics();

Kita mulai menggambar apabila tombol kiri mouse ditekan. Selama ini kita membuat program ketika tombol kiri mouse di-klik. Untuk menambahkan program apabila tombol kiri mouse ditekan (atau apapun selain klik), gunakan event yang ada di toolbox properties. Klik ganda pada MouseDown, maka kita akan dibawa ke source code untuk event OnMouseDown. Tambahkan program berikut:

if (e.Button == MouseButtons.Left) {shouldPaint = true;}







Variabel shouldPaint adalah variabel boolean yang harus kita deklarasikan di awal sebagai variabel global agar dapat diakses oleh semua fungsi.

private Graphics objGraphic;
private shouldPaint = false;

Kemudian agar aplikasi mulai menggambar ketika mouse digerakkan, maka kita harus membuat program ketika mouse bergerak. Klik ganda pada MouseMove, maka kita akan dibawa ke source code untuk event OnMouseMove. Tambahkan program berikut:

objGraphic.FillEllipse(new SolidBrush(Color.BlueViolet), e.X, e.Y, intDiameter,intDiameter);




Statement di atas adalah untuk menggambar elips dengan menggunakan brush berwarna biru keunguan, di koordinat event X dan event Y, tinggi elips sebesar intDiameter, lebar elips sebesar intDiameter juga alias lingkaran. Agar aplikasi berhenti menggambar ketika tombol mouse dilepas, kita harus menambahkan program di event OnMouseUp.

void MainFormMouseUp(object sender, MouseEventArgs e)
{
shouldPaint = false;
}




Jalankan program. Dan inilah hasilnya :







IV.        Tugas

Buat aplikasi untuk menggambar dan menghitung panjang sebuah garis. Gunakan method DrawLine:

objGraphic.DrawLine(new Pen(Color.Black), x1, y1, x2, y2);

Object Pen sama seperti SolidBrush, hanya saja Pen menampilkan titik satu piksel saja. Gambar diletakkan di object panel. Agar dapat menggambar di panel, ada sedikit perbedaan untuk membuat instance Graphics:

objGraphic = panel1.CreateGraphics();


Kemudian tambahkan object TextBox untuk menampilkan hasil perhitungan jarak.





Di sini saya menggunakan dua form yaitu form1 dan form dimana masing masing form memiliki fungsinya :
Form1 berfungsi sebagai sistem loading untung awalan memasuki form2. Dan form 2 berfungsi menjalankan paint (menghitung panjang garis).

Gambar form1 :







Gambar form2 :


Prosesnya sama pada saat praktikum, hanya tinggal mengembangkannya saja sendiri. Dan inilah program dari aplikasi yg telah saya buat :

Program Form 1:
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 test1
{
    public partial class Form1 : Form
    {
        private string i, j, k;
        public Form1()
        {
            InitializeComponent();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
           
            if (progressBar1.Value < 100)
            {
                progressBar1.Value += 1;
            }
            else if (progressBar1.Value == 100)
            {
                timer1.Stop();
                Form2 Form = new Form2();
                Form.Show();
                this.Hide();
            }

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Enabled = true;
            timer2.Enabled = true;
        }

        private void timer2_Tick(object sender, EventArgs e)
        {
            i = label3.Text;
            j = i.Substring(i.Length  -1, 1);
            k = i.Substring(0, i.Length - 1);
            label3.Text = j + k;
        }

       
    }
}


Program Form2 :
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 test1
{
    public partial class Form2 : Form
    {
        private Graphics Septian;
        bool gambar = false;
        private double diffxy;
        private int curX, curY, x, y, diffX, diffY;
        private int a=0, b=0;
        private Color color;

        public Form2()
        {
            InitializeComponent();
        }

        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            Septian = panel1.CreateGraphics();
        }

        private void line_Click(object sender, EventArgs e)
        {
            a = 1;
        }

        private void rec_Click(object sender, EventArgs e)
        {
            a = 2;
        }

        private void elips_Click(object sender, EventArgs e)
        {
            a = 3;
        }

       
              
        private void panel1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                gambar = true;
                b++;
            }

            curX = e.X;
            curY = e.Y;
           
        }

        private void panel1_MouseClick(object sender, MouseEventArgs e)
        {
            if (gambar == true)
            {
                x = e.X;
                y = e.Y;
                diffX = e.X - curX;
                diffY = curY - e.Y;

                if (a == 1)
                {
                    Septian.DrawLine(new Pen(color), curX, curY, e.X, e.Y);
                }

                else if (a == 2)
                {
                    Septian.DrawRectangle(new Pen(color), curX, curY, diffX, -diffY);
                }

                else if (a == 3)
                {
                    Septian.DrawEllipse(new Pen(color), curX, curY, diffX, -diffY);
                }

            }
        }

        private void pilihwarna_Click(object sender, EventArgs e)
        {
            ColorDialog dlg = new ColorDialog();
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                pilihwarna.BackColor = dlg.Color;
                color = dlg.Color;
            }
        }

        private void panel1_MouseMove(object sender, MouseEventArgs e)
        {
            textBox1.Text = Convert.ToString(diffX);
            textBox2.Text = Convert.ToString(diffY);
            diffxy = Math.Sqrt((diffX * diffX) + (diffY * diffY));
            textBox3.Text = Convert.ToString(diffxy);

        }

        private void clear_Click(object sender, EventArgs e)
        {
            this.Refresh();
            textBox1.Text = " 0 ";
            textBox2.Text = " 0 ";
            textBox3.Text = " 0 ";

          
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            linkLabel1.Text = "septianmiswanto.blogspot.com";
            linkLabel1.Links.Add(0, 28, "www.septianmiswanto.blogspot.com");
            this.Width = 642;
        }

        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            System.Diagnostics.Process.Start(e.Link.LinkData.ToString());
        }

        private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        {
            MessageBox.Show("Terima Kasih", " ", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
        }

        private void panah_Click(object sender, EventArgs e)
        {
            timer1.Enabled = true;
            for (int p = this.Width; p < 820; p++)
            {
                this.Width = x;
            }
            this.Width = 820;

            // timer1.Enabled = true;
            // bt_mode.Hide();

        }       
    }
     
}




terima kasih yg telah membaca blog saya :)
agar lebih jelas di bawah terdapat videonya ;)





No comments:

Post a Comment