Pada button1, saya ingin membuat line(garis), pada button2 saya ingin membuat rectangle(kotak), kemudian pada button3 saya ngin membuat circle(lingkaran), pada button 4 saya ingin membuat pilihan warna dari garis , dengan menggunakan dilogcolor. pada textbox1 dan textbox2, saya ingin menampilkan koordina X dan Y, dan kemudian pada textbox3 saya ingin menampilkan panjang dari gambar, seperti panjang garis, panjang kotak, dan panjang longkaran, panjang yang dihitung adalah dari titik koordinat pertama (ketika awal mengklik untuk membuat gambar) ke titik koordinat kedua (ketika mose dipindahkan sekaligus dilepas).
Kemudian yang harus kita lakukan selanjutnya adalah, membuat class, jika menggunakan visual studio, dapat mengklik Project, kemudian Add Class, lalu tambahkan progran ini:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
namespace Test_5
{
[Serializable]
class Class1
{
private Point mold;
private Point mcur;
private int mshape;
private float mwidht;
private Color mcolor;
public Class1()
{
mold = new Point(0, 0);
mcur = new Point(0, 0);
mshape = 0;
mwidht = 1;
mcolor = Color.Black;
}
public Class1(Point old, Point cur, int shape, float widht, Color color)
{
mold = old;
mcur = cur;
mshape = shape;
mwidht = widht;
mcolor = color;
}
public Point old
{
get
{
return mold;
}
set
{
mold = value;
}
}
public Point cur
{
get
{
return mcur;
}
set
{
mcur = value;
}
}
public int shape
{
get
{
return mshape;
}
set
{
mshape = value;
}
}
public float widht
{
get
{
return mwidht;
}
set
{
mwidht = value;
}
}
public Color color
{
get
{
return mcolor ;
}
set
{
mcolor = value;
}
}
}
}
Program diatas nantinya akan dipanggil di form 1.
Kemudian pada form1 dapat dibuat program seprti berikut:
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.Collections;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Drawing.Drawing2D;
Kemudian pada public dapat ditambahkan tipe data seperti berikut:
private Graphics objGraphic;
private ArrayList ds;
private Point mold;
private Point mcur;
private double xy;
private int mshape;
private float mwidht;
private Color mcolor;
private Boolean shouldPaint = false;
kemudian pada initializeComponent, dapat ditambahkan program seperti berikut:
ds = new ArrayList();
mshape = 0;
mwidht = 1;
mcolor = Color.Black;
Kemudian untuk membuat jika mose kiri detekan dia akan menggambar, yaitu kita mrnggunakan mouseDown, mouseMove, mouseUp, dengan mengklik duakali pada ivet mouse tersebut, dan kemudaian tambahkan program kedalam masing program mouse, seperti berikut;
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
this.Cursor = Cursors.Cross;
if (e.Button == MouseButtons.Left)
{
mold = e.Location;
shouldPaint = true;
}
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
mcur = e.Location;
Invalidate();
}
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
xy = Math.Sqrt(((e.X) * (e.X)) + ((e.Y) * (e.Y)));
textBox1.Text = Convert.ToString(e.X);
textBox2.Text = Convert.ToString(e.Y);
textBox3.Text = Convert.ToString(xy);
shouldPaint = false;
this.Cursor = Cursors.Default;
Class1 a = new Class1(mold, mcur, mshape, mwidht, mcolor);
ds.Add(a);
}
Pada program diatas dapat dilihat pada mouse down, program akan menggambar ketika tombol kiri pada mouse ditekan, dan akan berhenti bekerja pada saat tombol mouse dilepas, dapat dilihat pada mouse move, itu ada program untuk memberhrntikan perintah untuk menggambar. Pada mouse move, terdapat beberapa tectbox yang textbox1 fungsinya adalah menampilkan titik koordinat X pada saat mouse dilepas, jupa pada textbox2, adalah untuk menampilkan titik koordinat Y, dan kemudian pada textbox3, akan menampilkan panjang yaitu didapat dari rumus xy.
Setelah itu, buat program berikut dibawahnya program diatas:
private Rectangle rec(Point p1, Point p2)
{
Rectangle a = new Rectangle();
a.X = (p1.X > p2.X ? p2.X : p1.X);
a.Y = (p1.Y > p2.Y ? p2.Y : p1.Y);
a.Width = Math.Abs(p1.X - p2.X);
a.Height = Math.Abs(p1.Y - p2.Y);
return a;
}
Program tersebut, nantinya akan dipanggil untuk membuat rogram line, rectangle maupun circle. Kemudian pada form, double kick paint pada evennya, kemudian tambahkan program berikut kedalamnya:
foreach (Class1 a in ds)
{
draw(e.Graphics, a.old, a.cur, a.shape, a.widht, a.color);
}
draw(e.Graphics, mold, mcur, mshape, mwidht, mcolor);
Setelah itu, buat program baru dibawahnnya, seperti berikut:
private void draw(Graphics e, Point mold, Point mcur, int mshape, float mwidht, Color mcolor)
{
Pen p = new Pen(mcolor, mwidht);
switch (mshape)
{
case 0:
e.DrawLine(p, mold, mcur);
break;
case 1:
e.DrawRectangle(p, rec(mold, mcur));
break;
case 2:
e.DrawEllipse(p, rec(mold, mcur));
break;
}
}
Program diatas adalah program untuk membuat line pada case 0, rectangel pada case 1 dan circle pada case 2. Pada program diatas, saya menggunaka switch, fungsinya agar kita dapat memanggil mereka melalui button yang kita gunakan, dan kemudian menjalankan programnya sesuai nomor switch yang dipanggil.
Kemudian pada design, dapat mengklik dua kali pada button 1, 2, 3 dan 4, kemudian pada button 1 sampai button 3, kemudian masukkan program switch yang ingi dipanggil didalamnnya, seperti berikut:
private void button1_Click(object sender, EventArgs e)
{
mshape = 0;
}
private void button2_Click_1(object sender, EventArgs e)
{
mshape = 1;
}
private void button3_Click_1(object sender, EventArgs e)
{
mshape = 2;
}
Maka, pada button 1 telah terisi switch 0, yang berfungsikan menjalankan program membuat line, juga pada button 2, telah terisi prigram yang akan memanggil program untuk membuat rectangle, dan juga pada button3 yang telah terisi program yang akan menjalankan program circle.
Kemudian pada design, double klik pada button 4, dan tambahkan program, seperti berikut:
private void button4_Click(object sender, EventArgs e)
{
ColorDialog dig = new ColorDialog();
dig.Color = mcolor;
if (dig.ShowDialog() == DialogResult.OK)
{
mcolor = dig.Color;
}
}
Pada program diatas, button 4 berisi program yang akan meminta warna pada gambar yang kita buat, jika saat di run, pada button 4 jika ditekan, maka akan tampil sebuah form yang berisikan pilihan warna untuk mengganti warna pada garis gambar.
Dan berakhirlah program seperti design yang telah dibuat jika program dijalankan maka akan tampak seperti berikut:
Maka berakhirlah langkah-langkah atau cara membuat program pain sederhana berbasis C#. Selamat mencoba, sekian. Terimakasih.