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
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;
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 ;)
terima kasih yg telah membaca blog saya :)
agar lebih jelas di bawah terdapat videonya ;)






No comments:
Post a Comment