• Tidak ada hasil yang ditemukan

Menggambar Objek 2D dengan Mudah

N/A
N/A
Protected

Academic year: 2021

Membagikan "Menggambar Objek 2D dengan Mudah"

Copied!
16
0
0

Teks penuh

(1)
(2)

Menggambar Objek 2D dengan Mudah

Oleh: Sendy PK

Halo sobat coding, ada yang suka gambar? Kalo ada tutorial ini pas banget nih, karena kali ini kita akan membuat program untuk menggambar objek 2D. Berikut deskripsi program yang akan kita buat :. Program berguna untuk menggambar bentuk/shape 2D. Pilihan bentuk/shape ada tiga buah, yaitu Kotak, Segi...

Halo sobat coding, ada yang suka gambar? Kalo ada tutorial ini pas banget nih, karena kali ini kita akan membuat program untuk menggambar objek 2D.

Berikut deskripsi program yang akan kita buat :.

Program berguna untuk menggambar bentuk/shape 2D.

Pilihan bentuk/shape ada tiga buah, yaitu Kotak, Segitiga, Lingkaran. Ditambah satu buah pilihan

Custom, yaitu pilihan yang membebaskan user untuk menggambar apa saja.

Untuk pilihan warna yang bisa digunakan ada empat buah.

Untuk ukuran dan letak shape ditentukan melalui input user pada TextBox.

(3)

Program akan menggunakan library yang bernama System.Drawing. Drawing2D.

Sebelum coding, terlebih dahulu kita mendesain tampilan programnya Langkah-langkah mendesain tampilan program adalah sebagai berikut:

Buat project baru dengan nama grafis2D, simpan di folder e-Trik_5.

Masukkan ke dalam Form1 komponen-komponen yang dibutuhkan sebagai berikut. 5 buah Label ,

dan 4 buah TextBox , 3 buah Button, 3 buah ComboBox , 1 buah CheckBox , dan 3 buah GroupBox

Atur tata letaknya kira-kira seperti pada gambar di bawah ini

Untuk langkah selanjutnya, kita akan mengubah semua nilai properties pada masing-masing objek yang ada pada Form1, termasuk nilai properties Form1 itu sendiri. Untuk mengetahui komponen dan properties yang mana yang akan diubah, dan apa nilainya, silahkan Anda lihat pada Tabel di bawah ini.

(4)
(5)
(6)

Setelah melakukan pendesainan, selanjutnya adalah pengkodean Langkah-langkah melakukan coding program adalah sebagai berikut:

Klik satu kali pada Form1, lalu tekan tombol F7, ketikkan kode di bawah using

System.Windows.Form; seperti dibawah ini using System.Text;

using System.Windows.Forms;

using System.Drawing.Drawing2D;

Keterangan Program:

Baris 3: memanggil namespace lain dengan menggunakan perintah using. Pada program ini

namespace yang dipanggil adalah System.Drawing. Drawing2D.

Setelah itu ketikkan kode berikut

(7)

public partial class Form1 : Form {

bool bolehDiGambar = false;

int batasAreaBolehDiGambar = 130;

Graphics objGrafik;

Color warnaShape = Color.Black;

Brush warnaFill = Brushes.Black;

public Form1() {

InitializeComponent();

}

Keterangan Program:

Baris 3: mendeklarasikan variabel boolean dengan nama bolehDiGambar, dan di-set dengan nilai

false.

Baris 4: mendeklarasikan variabel Integer dengan nama batasAreaBolehDiGambar, dan di-set

dengan nilai 130.

Baris 5: membuat instance dari class Graphics dengan nama objGrafik.

Baris 6: membuat objek dari class Color dengan nama warnaShape. Lalu set dengan warna hitam.

Baris 7: membuat objek dari class Brush dengan nama warnaFill. Lalu set dengan warna hitam.

Kembali ke form designer, klik satu kali pada Form1, pilih event MouseDown. Kemudian ketik kode yang akan berjalan jika user menekantombol mouse di atas Form1 berikut ini.

private void Form1_MouseDown(object sender, MouseEventArgs e) {

if (e.Button == MouseButtons.Left) bolehDiGambar = true;

}

Keterangan Program:

Baris 3-4: periksa apakah tombol mouse sebelah kiri ditekan, jika benar set variabel

bolehDiGambar menjadi true.

Setelah itu kembali lagi ke form designer, dan pilih event MouseUp. Tambahkan kode berikut untuk men-set variabel bolehDiGambar menjadi false. Kode ini akan berjalan apabila user melepas tombol mouse, atau dengan kata lain tombol mouse tidak ditekan

private void Form1_MouseUp(object sender, MouseEventArgs e) {

bolehDiGambar = false;

}

Sekarang kita akan membuat kode yang akan berjalan jika user menekan tombol mouse pada Form1, lalu menggerakkannya. Caranya sama dengan sebelumnnya, akan tetapi event yang dipilih adalah

(8)

MouseMove.

private void Form1_MouseMove(object sender, MouseEventArgs e) {

string strPilShape = comboPilShape.Text;

if ((bolehDiGambar) && (e.Y > batasAreaBolehDiGambar) &&

(strPilShape == "Custom")) {

objGrafik = CreateGraphics();

objGrafik.FillEllipse(new SolidBrush(warnaShape), e.X, e.Y, 10, 10);

} }

Keterangan Program:

Baris 3: mengambil isi dari ComboBox comboPilShape, simpan ke dalam variabel strPilShape.

Baris 4: periksa apakah bolehDiGambar bernilai true dan kursor mouse tidak melewati

batasAreaBolehDiGambar dan isi variabel strPilShape adalah Custom.

Baris 6: membuat objek yang akan digunakan sebagai pengontrol fungsi- fungsi Grafis

Baris 7: menggambar shape titik sesuai warna, koordinat, dan besar yang telah ditentukan.

Warnanya ditentukan oleh variabel warnaShape, koordinatnya ditentukan oleh posisi kursor mouse yang diwakilkan oleh e.X dan e.Y. Lalu angka 10, 10, berarti tinggi dan lebar objeknya Dan yang terakhir, buat kode untuk untuk Form1 dengan eventMouseClick. Kode ini akan berjalan jika user mengklik pada Form1. Berikut kode yang sebenarnya sama dengan kode pada langkah sebelumnya.

private void Form1_MouseClick(object sender, MouseEventArgs e) {

string strPilShape = comboPilShape.Text;

if ((bolehDiGambar) && (e.Y > batasAreaBolehDiGambar) &&

(strPilShape == "Custom")) {

objGrafik = CreateGraphics();

objGrafik.FillEllipse(new SolidBrush(warnaShape), e.X, e.Y, 10, 10);

} }

Setelah itu, klik dua kali pada komponen TextBox txtLebarShape, dan ketikkan kode berikut.

private void txtLebarShape_TextChanged(object sender, EventArgs e) {

if (cekUkuran.Checked == true)

txtTinggiShape.Text = txtLebarShape.Text;

}

(9)

Keterangan Program:

Baris 3: periksa apakah komponen CheckBox cekUkuran dicentang. Jika benar jalankan perintah

pada baris 4.

Baris 4: samakan isi komponen TextBox txtTinggiShape dengan isi komponen TextBox

txtLebarShape.

Langkah selanjutnya, klik dua kali pada kompenen CheckBox cekUkuran. Lalu ketikkan kode seperti berikut.

private void cekUkuran_CheckedChanged(object sender, EventArgs e) {

if (cekUkuran.Checked == true) {

txtTinggiShape.Text = txtLebarShape.Text;

txtTinggiShape.Enabled = false;

}

else { txtTinggiShape.Enabled = true; } }

Keterangan Program:

Baris 3: periksa apakah komponen CheckBox cekUkuran dicentang. Jika benar jalankan perintah

pada baris 5-6. Dan, jika salah jalankan baris 8.

Baris 5: samakan isi komponen TextBox txtTinggiShape dengan isi komponen TextBox

txtLebarShape.

Baris 6: ubah status komponen TextBox txtTinggiShape menjadi false, atau dengan kata lain

txtTinggiShape dibuat disable.

Baris 8: enable komponen TextBox txtTinggiShape.

Klik dua kali pada komponen ComboBox comboPilShape, dan ketikkan kode ini.

private void comboPilShape_SelectedIndexChanged(object sender, EventArgs e) {

string strPilShape = comboPilShape.Text;

if (strPilShape == "Custom") {

lbl_warnaFill.Visible = false;

comboPilWarnaFill.Visible = false;

gbUkuranShape.Visible = false;

gbPosisiShape.Visible = false;

cmdBuat.Enabled = false;

} else {

lbl_warnaFill.Visible = true;

comboPilWarnaFill.Visible = true;

gbUkuranShape.Visible = true;

gbPosisiShape.Visible = true;

(10)

cmdBuat.Enabled = true;

} }

Keterangan Program:

Kode ini akan berjalan apabila user mengubah pilihan pada komponen ComboBox comboPilShape.

Baris 3: mengambil isi dari ComboBox comboPilShape, simpan ke dalam variabel strPilShape.

Baris 4: periksa apakah isi dari variabel strPilShape sama dengan Custom. Jika benar, jalankan

perintah pada baris 6-10. Dan jika salah, jalankan perintah pada baris 14-18.

Baris 6-10: disable komponen-komponen seperti lbl_warnaFill, comboPilWarnaFill,

gbUkuranShape, gbPosisiShape, dan cmdBuat.

Baris 14-18: enable komponen-komponen seperti lbl_warnaFill, comboPilWarnaFill,

gbUkuranShape, gbPosisiShape, dan cmdBuat.

Masih unuk komponen ComboBox, akan tetapi kali ini untuk komponen comboPilWarnaGaris.

Berikut kode yang peru diketik.

private void comboPilWarnaGaris_SelectedIndexChanged(object sender, EventArgs e)

{

string strPilWarnaGaris = comboPilWarnaGaris.Text;

switch (strPilWarnaGaris) {

case "Hitam":

warnaShape = Color.Black;

break;

case "Merah":

warnaShape = Color.Red;

break;

case "Hijau":

warnaShape = Color.MediumSpringGreen;

break;

case "Biru":

warnaShape = Color.Blue;

break;

default:

warnaShape = Color.Black;

break;

} }

Keterangan Program:

(11)

Baris 3: mengambil isi dari ComboBox comboPilWarnaGaris, simpan ke dalam variabel

strPilWarnaGaris.

Baris 4-21: menentukan isi dari variabel warnaShape, berdasarkan warna yang dipilih oleh user

yang diwakili oleh variabel strPilWarnaGaris.

Dan kode yang terakhir untuk komponen ComboBox, adalah kode untuk komponen comboPilWarnaFill. Berikut kodenya.

private void comboPilWarnaFill_SelectedIndexChanged(object sender, EventArgs e)

{

string strPilWarnaFill = comboPilWarnaFill.Text;

switch (strPilWarnaFill) {

case "Hitam":

warnaFill = Brushes.Black;

break;

case "Merah":

warnaFill = Brushes.Red;

break;

case "Hijau":

warnaFill = Brushes.MediumSpringGreen;

break;

case "Biru":

warnaFill = Brushes.Blue;

break;

default:

warnaFill = Brushes.Black;

break;

} }

Keterangan Program:

Baris 3: mengambil isi dari ComboBox comboPilWarnaFill simpan ke dalam variabel

strPilWarnaFill.

Baris 4-21: menentukan isi dari variabel warnaFill, berdasarkan warna yang dipilih oleh user yang

diwakili oleh variabel strPilWarnaFill.

Sekarang kita akan membuat kode untuk komponen Button, yang pertama adalah untuk Button cmdBuat. Berikut kode yang harus diketik. Ingat hanya yang berwarna merah.

private void cmdBuat_Click(object sender, EventArgs e) {

bolehDiGambar = true;

objGrafik = CreateGraphics();

(12)

int posShapeX = int.Parse(txtPosX.Text);

int posShapeY = int.Parse(txtPosY.Text);

if ((bolehDiGambar) && (posShapeY > batasAreaBolehDiGambar)) {

string strPilShape = comboPilShape.Text;

int lebarShape = int.Parse(txtLebarShape.Text);

int tinggiShape = int.Parse(txtTinggiShape.Text);

GraphicsPath gp = new GraphicsPath();

Pen P = new Pen(warnaShape, 3);

switch (strPilShape) {

case "Kotak":

gp.AddRectangle(new Rectangle(posShapeX, posShapeY, lebarShape, tinggiShape));

break;

case "Segitiga":

Point pt1 = new Point(posShapeX, posShapeY);

Point pt2 = new Point((posShapeX - lebarShape), (posShapeY + tinggiShape));

Point pt3 = new Point((posShapeX + lebarShape), (posShapeY + tinggiShape));

gp.AddPolygon(new Point[] { pt1, pt2, pt3 });

break;

case "Lingkaran":

gp.AddEllipse(posShapeX, posShapeY, lebarShape, tinggiShape);

break;

default:

MessageBox.Show("Maaf, Pilihan Shape tidak ditemukan");

break;

}

if (strPilShape != "Custom") { objGrafik.DrawPath(P, gp); }

if (comboPilWarnaFill.Text != "None") { objGrafik.FillPath(warnaFill, gp); } bolehDiGambar = false;

} }

(13)

Keterangan Program:

Baris 3: ubah variabel bolehDiGambar menjadi true.

Baris 4: siapkan objek dengan nama objGrafik, sebagai pengontrol fungsifungsi untuk keperluan

grafis.

Baris 5 dan 6: ambil koordinat dimana shape akan digambar sesuai keinginan user. Lalu simpan ke

variabel posShapeX dan posShapeY.

Baris 7: periksa apakah variabel bolehDiGambar bernilai true dan isi variable posShapeY lebih

besar dari isi variabel batasAreaBolehDiGambar.

Baris 9: mengambil isi dari ComboBox comboPilShape simpan ke dalam variabel strPilShape.

Baris 10: mengambil isi dari TextBox txtLebarShape, lalu simpan ke dalam variabel lebarShape.

Baris 11: mengambil isi dari TextBox txtTinggiShape, lalu simpan ke dalam variabel tinggiShape.

Baris 12: membuat objek baru dari class GraphicsPath, dengan nama gp. Class ini mewakili

rangkaian dari garis dan kurva yang saling terhubung.

Baris 13: membuat objek yang bisa digunakan untuk menggambar garis dan kurva, dengan nama P.

Warna yang digunakan ditentukan dari isi variabel warnaShape. Dan tebal objeknya adalah 3.

Baris 14: statement switch yang bertugas menentukan shape mana yang akan digambar, sesuai

dengan pilihan user.

Baris 16: apabila user memilih shape Kotak, maka baris 17-18 akan dijalankan.

Baris 17: dengan menggunakan method AddRetangle yang ada pada objek gp. Buat shape kotak,

dengan variabel posShapeX dan posShapeY sebagai koordinat dimana shape akan digambar.

Lalu, variabel lebarShape dan tinggiShape sebagai penentu berapa lebar dan tinggi dari shape yang akan dibuat.

Baris 16: apabila user memilih shape Segitiga, maka baris 20-24 akan dijalankan.

Baris 20-22: menentukan ketiga koordinat titik yang diperlukan untuk menggambar shape segitiga.

Baris 23: dengan menggunakan method AddPolygon yang ada pada objek gp. Buat shape segitiga,

dimana koordinat ketiga buah titik adalah variable p1, p2, dan p3.

Baris 25: apabila user memilih shape Lingkaran, maka baris 26-27 akan dijalankan.

Baris 26: dengan menggunakan method AddEllipse yang ada pada objek gp. Buat shape lingkaran,

dengan variabel posShapeX dan posShapeY sebagai koordinat dimana shape akan digambar.

Lalu, variabel lebarShape dan tinggiShape sebagai penentu berapa lebar dan tinggi dari shape yang akan dibuat.

Baris 28-30: apabila shape yang dipilih user, tidak tercantum dalam daftar yang telah ditentukan,

maka munculkan pesan “Maaf, Pilihan Shape tidak ditemukan”.

Baris 32-33: periksa apakah shape yang dipilih bukan Custom. Jika benar, maka dengan

menggunakan kontrol objGrafik, gambar shape yang ada pada objek gp.

Baris 34-35: periksa apakah pilihan warna fill bukan None. Jika benar, maka isi (fill) shape yang

sebelumnya telah digambar dengan warna yang ada pada variabel warnaFill.

Baris 36: set variabel bolehDiGambar menjadi false.

Setelah kita membuat kode untuk menggambar shape, maka perlu juga kita buat kode untuk membersihkan “kertas gambar” yang kita pakai tadi. Kode berikut untuk komponen Button cmdReset.

private void cmdReset_Click(object sender, EventArgs e) {

objGrafik.Clear(Color.White);

}

Keterangan Program:

(14)

Baris 3: bersihkan shape yang ada pada objek objGrafik, dengan menggunakan method Clear.

Dan warna yang digunakan adalah Putih (Color.White).

Dan yang terakhir, seperti biasa kode yang berguna untuk menutup aplikasi yang kita buat ini.

private void cmdKeluar_Click(object sender, EventArgs e) {

this.Close();

}

Pengkodean sudah selesai, sekarang saatnya untuk menjalankan program, silahkan tekan F5 untuk menjalankan program

Langkah-langkah melakukan ujicoba program adalah sebagai berikut:

Setelah program dijalankan, tekan tombol Buat.

Maka akan tercipta menu untuk membuat bangun 2D dengan pilihan Shape : Kotak, Segitiga, Lingkaran, dan Custom, dengan Warna Garis : Hitam, Merah, Hijau, dan Biru, dengan Warna Fill : None (tidak ada warna), Hitam, Merah, Hijau, dan Biru. Lalu dengan Ukuran Shape dan Posisi Shape yang bias disesuaikan dengan mengisi text boxnya. Seperti gambar di bawah ini.

(15)

Sekarang coba ubah Shape menjadi Kotak, Warna Garis menjadi Hitam, Warna Fill menjadi Biru. Ubah Ukuran Shape menjadi 200 x 200, dan juga Posisi Shape menjadi 23 x 300. Tekan tombol Buat. Lalu akan tampil seperti gambar di bawah ini

Tekan tombol Reset, untuk membersihkan area gambar.

Tekan tombol Keluar, untuk menutup aplikasi

Sekian tutorial kali ini, sampai jumpa di tutorial selanjutnya.

(16)

Tentang Penulis

Sendy PK

Saya adalah Programmer yang memiliki impian untuk menguasai dunia kunjungi situs pribadi saya di www.spk.my.id dan Online Shop saya di www.spkshop.web.id

Referensi

Dokumen terkait

 Apabila user menekan tombol Tampil, maka user akan ditampilkan array yang diinputkan pada label HASIL ANTRIAN.  Apabila user menekan tombol Dequeue, maka akan menghapus data

menyatakan dengan sesungguhnya bahwa karya ilmiah yang berjudul: Pemanfaatan Bakteri Antagonis Bacillus subtilis Dan Pseudomonas fluorescens Untuk Mengendalikan

Dalam studi manajemen, kehadiran konflik pendidikan tidak bisa terlepas dari permasalahan keseharian yang dirasakan oleh pengelola lembaga pendidikan. Konflik tersebut

Dalam kedudukannya sebagai pengelola barang, dan dihubungkan dengan amanat pasal 6 ayat (2) Undang-undang nomor 17 tahun 2003, Gubernur juga berwenang mengajukan usul untuk

Bahan yang digunakan pada penelitian ini adalah tanah Entisol dan Inceptisol Kuala Bekala, tanah Ultisol Kebun Percobaan USU Tambunan, Benih jagung varietas pioner-23,

Hal lain yang cukup menarik di antara tiga fraksi pada percobaan ini, bahwa pada fraksi ukuran butir kasar dengan selang waktu pengamatan tiap 2 jam selama 6 jam untuk berat

Dari hasil penelitian menunjukkan bahwa ekstrak etanol daun petai cina (Leucaena glauca (L.) Benth.) memiliki kemampuan untuk menangkap radikal bebas dengan

R 2 Menceri takan pemaha mannya pada masalah yang diberika n, menulis kan simbol dengan benar, dan menjela skan makna simbol yang sudah Menjelask an ulang sebuah