Membuat Paint App dengan C# dan GDI+ (Part 1)

Sesudah anda membaca tutorial saya yang sebelumnya tentang pemrograman GDI+ dengan C# Part 1 dan 2 maka pada kesempatan ini saya akan melanjutkannya dengan membuat sebuah contoh yang simple agar penerapan GDI+ menjadi lebih mudah untuk dimengerti

Pada tutorial kali ini saya akan mengajak anda untuk mencoba beberapa fitur yang ditawarkan oleh library GDI+ dan C# untuk membuat sebuah aplikasi pengolah citra yang sederhana (mirip aplikasi paint). Aplikasi ini juga saya gunakan sebagai tugas untuk mahasiswa yang mengambil matakuliah komputer grafis.

Untuk membuat aplikasi ini pertama-tama anda harus membuat design form sebagai berikut:

image 

kemudian deklarasikan beberapa variabel yang akan digunakan pada aplikasi ini

private Bitmap bitmap = null;
private Bitmap curBitmap = null;
private bool dragMode = false;
private bool boolFill = false;
private int drawIndex = 1;
private int curX, curY, x, y;
private int diffX, diffY;
private Graphics curGraphics;
public Pen curPen;
private SolidBrush curBrush;
private Size fullSize;

private Color borderColor = Color.Black;
private Color fillColor = Color.White;

private Image currImage = null;
private string currFilename = "";

pada saat form di load buat object Bitmap dan Graphic sebagai berikut,

private void Form1_Load(object sender, EventArgs e)
{
    //cek ukuran display monitor
    fullSize = SystemInformation.PrimaryMonitorMaximizedWindowSize;
    //buat object bitmap baru
    bitmap = new Bitmap(fullSize.Width,fullSize.Height);
    //buat object graphic baru
    curGraphics = Graphics.FromImage(bitmap);
    curPen = new Pen(Color.Black);
    curBrush = new SolidBrush(Color.Black);
}

pada saat event MouseDown pada form simpan titik (x,y)

private void Form1_MouseDown(object sender, MouseEventArgs e)
{
    curX = e.X;
    curY = e.Y;
    dragMode = true;
}

pada saat event MouseMove, hitung height dan width dari titik awak ke titik akhir

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
    x = e.X;
    y = e.Y;
    //hitung beda antara titik awal dan akhir(pada saat move)
    diffX = e.X - curX;
    diffY = e.Y - curY;

    if (dragMode)
    {
        this.Refresh();
    }
}

Pada saat event MouseUp gambar dulu objectnya (rectangle, pen, atau, ellipse). Penggambaran object ini bukan di form melainkan pada object Graphic yang akan digunakan sebagai background agar setelah digambar object gambar yang lama tidak hilang.

private void Form1_MouseUp(object sender, MouseEventArgs e)
{
    diffX = x - curX;
    diffY = y - curY;

    switch (drawIndex)
    {
        case 1:
            //gambar garis
            curGraphics.DrawLine(curPen, curX, curY, x, y);
            break;
        case 2:
            //gambar ellipse
                curGraphics.DrawEllipse(curPen, curX, curY, diffX, diffY);
            break;
        case 3:
            //gambar kotak
                curGraphics.DrawRectangle(curPen, curX, curY, diffX, diffY);
            break;
    }

    RefreshFormBackground();
    dragMode = false;
}

Pada event Paint di form gambar objecnya

private void Form1_Paint(object sender, PaintEventArgs e)
{
    Graphics g = e.Graphics;
   
    if (currImage != null)
    {
        g.DrawImage(currImage, AutoScrollPosition.X, AutoScrollPosition.Y+pnlMenu.Height, currImage.Width, currImage.Height);
        curGraphics.DrawImage(currImage, AutoScrollPosition.X, AutoScrollPosition.Y+pnlMenu.Height, currImage.Width, currImage.Height);
        RefreshFormBackground();
        currImage = null;
    }

    if (dragMode)
    {
        switch (drawIndex)
        {
            case 1:
                //gambar garis
                g.DrawLine(curPen, curX, curY, x, y);
                break;
            case 2:
                //gambar ellipse
                    g.DrawEllipse(curPen, curX, curY, diffX, diffY);
                break;
            case 3:
                //gambar kotak
                    g.DrawRectangle(curPen, curX, curY, diffX, diffY);
                break;
        }
    }
}

method RefreshFormBackground() digunakan untuk menjadikan object curGraphic sebagai background form

private void RefreshFormBackground()
{
    curBitmap = bitmap.Clone(new Rectangle(0, 0, this.Width, this.Height), bitmap.PixelFormat);
    this.BackgroundImage = curBitmap;
}

setelah itu coba anda jalankan programnya dan mencoba menggambar object line atau rectangle sebagai berikut

image

untuk menambahkan pewarnaan fiil, border, open, dan save file akan dibahas di artikel selanjutnya, selamat mencoba

have fun guys.. coding is fun :)

Pemrograman GDI+ dengan C# (Part 2)

Graphic Class Method

Draw Method

Digunakan untuk menggambar garis, rectangle, dan ellipse

Drawing Lines

Method DrawLine digunakan untuk menggambar garis yang menghubungkan dua titik.

 

Contoh2_4 Menggambar Garis

private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            Pen redPen = new Pen(Color.Red, 1);
            Pen bluePen = new Pen(Color.Blue, 2);
            Pen greenPen = new Pen(Color.Green, 3);
            Pen blackPen = new Pen(Color.Black, 4);
            // Draw line using float coordinates
            float x1 = 20.0F, y1 = 20.0F;
            float x2 = 200.0F, y2 = 20.0F;
            g.DrawLine(redPen, x1, y1, x2, y2);
            // Draw line using Point structure
            Point pt1 = new Point(20, 20);
            Point pt2 = new Point(20, 200);
            g.DrawLine(greenPen, pt1, pt2);
            // Draw line using PointF structure
            PointF ptf1 = new PointF(20.0F, 20.0F);
            PointF ptf2 = new PointF(200.0F, 200.0F);
            g.DrawLine(bluePen, ptf1, ptf2);
            // Draw line using integer coordinates
            int X1 = 60, Y1 = 40, X2 = 250, Y2 = 100;
            g.DrawLine(blackPen, X1, Y1, X2, Y2);
            // Dispose of objects
            redPen.Dispose();
            bluePen.Dispose();
            greenPen.Dispose();
            blackPen.Dispose();
        }

Contoh2_5 Menggambar Garis yang Terhubung

private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            Pen redPen = new Pen(Color.Red, 1);
            PointF[] ptsArray ={
                new PointF( 20.0F, 20.0F),
                new PointF( 20.0F, 200.0F),
                new PointF(200.0F, 200.0F),
                new PointF(20.0F, 20.0F)};
            g.DrawLines(redPen, ptsArray);
        }

Drawing Rectangle

Bentuk dasar selanjutnya adalah rectangle. Jika anda ingin menggambar rectangle maka yang harus diperhatikan adalah titik awal / starting point, width, dan height-nya.

Contoh2_6 Menggambar Rectangle

 

private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            // Create pens and points
            Pen redPen = new Pen(Color.Red, 1);
            Pen bluePen = new Pen(Color.Blue, 2);
            Pen greenPen = new Pen(Color.Green, 3);
            float x = 5.0F, y = 5.0F;
            float width = 100.0F;
            float height = 200.0F;
            // Create a rectangle
            Rectangle rect = new Rectangle(20, 20, 80, 40);
            // Draw rectangles
            g.DrawRectangle(bluePen,
              x, y, width, height);
            g.DrawRectangle(redPen,
              60, 80, 140, 50);
            g.DrawRectangle(greenPen, rect);
            // Dispose of objects
            redPen.Dispose();
            bluePen.Dispose();
            greenPen.Dispose();
        }

Contoh 2_7 Menggambar Rectangle Berurutan / Series Mode

private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            Pen greenPen = new Pen(Color.Green, 4);
            RectangleF[] rectArray =
            {
                new RectangleF( 5.0F, 5.0F, 100.0F, 200.0F),
                new RectangleF(20.0F, 20.0F, 80.0F, 40.0F),
                new RectangleF(60.0F, 80.0F, 140.0F, 50.0F)
            };
            g.DrawRectangles(greenPen, rectArray);
            greenPen.Dispose();
        } 

Drawing Ellipses dan Circle

Bentuk ellipses adalah bentuk circular didalam bentuk rectangle. Bentuk ellipses mempunyai titik tengah / center point.

image

Contoh2_8 Menggambar Ellipses

 

private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            // Create pens
            Pen redPen = new Pen(Color.Red, 6);
            Pen bluePen = new Pen(Color.Blue, 4);
            Pen greenPen = new Pen(Color.Green, 2);
            // Create a rectangle
            Rectangle rect =
              new Rectangle(80, 80, 50, 50);
            // Draw ellipses
            g.DrawEllipse(greenPen,
              100.0F, 100.0F, 10.0F, 10.0F);
            g.DrawEllipse(redPen, rect);
            g.DrawEllipse(bluePen, 60, 60, 90, 90);
            g.DrawEllipse(greenPen,
              40.0F, 40.0F, 130.0F, 130.0F);
            // Dispose of objects
            redPen.Dispose();
            greenPen.Dispose();
            bluePen.Dispose();
        }

Drawing Text

Digunakan untuk menggambar text string dalam graphic surfaces

Contoh2_9 Menggambar String

private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            // Create brushes
            SolidBrush blueBrush = new SolidBrush(Color.Blue);
            SolidBrush redBrush = new SolidBrush(Color.Red);
            SolidBrush greenBrush = new SolidBrush(Color.Green);
            // Create a rectangle
            Rectangle rect = new Rectangle(20, 20, 200, 100);
            // The text to be drawn
            String drawString = "Hello GDI+ World!";
            // Create a Font object
            Font drawFont = new Font("Verdana", 14);
            float x = 100.0F;
            float y = 100.0F;
            // String format
            StringFormat drawFormat = new StringFormat();
            // Set string format flag to direction vertical,
            // which draws text vertically
            drawFormat.FormatFlags =
              StringFormatFlags.DirectionVertical;
            // Draw string
            
            g.DrawString("Drawing text",
              new Font("Tahoma", 14), greenBrush, rect);
            g.DrawString(drawString,
              new Font("Arial", 12), redBrush, 120, 140);
            g.DrawString(drawString, drawFont,
              blueBrush, x, y, drawFormat);
            // Dispose of objects
            blueBrush.Dispose();
            redBrush.Dispose();
            greenBrush.Dispose();
            drawFont.Dispose();
        }

Drawing Arc

Arc adalah bagian dari ellipse, yang dibentuk dari area rectangle, start angle, dan sweep angle. Cara penggunaan Arc adalah sebagai berikut:

Contoh2_11 Menggambar Arc

Buat design form sebagai berikut:

image

Buat variabel awal untuk deklarasi awal start dan sweep angle

private void Form1_Paint(object sender, PaintEventArgs e)
    {
        Graphics g = e.Graphics;
        Pen redPen = new Pen(Color.Red, 3);
        Rectangle rect = new Rectangle(20, 20, 200, 200);
        g.DrawArc(redPen, rect, startAngle, sweepAngle);
        redPen.Dispose();
    }
    private void btnReset_Click(object sender, EventArgs e)
    {
        startAngle =(float)Convert.ToDouble(txtStart.Text);
        sweepAngle =(float)Convert.ToDouble(txtSweep.Text);
        Invalidate();
    }

Drawing Curves

Curve terdiri dari dua macam yaitu open dan close curve

image

Contoh2_12 Drawing Curves

private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            // Create a pen
            Pen bluePen = new Pen(Color.Blue, 1);
            // Create an array of points
            PointF pt1 = new PointF(40.0F, 50.0F);
            PointF pt2 = new PointF(50.0F, 75.0F);
            PointF pt3 = new PointF(100.0F, 115.0F);
            PointF pt4 = new PointF(200.0F, 180.0F);
            PointF pt5 = new PointF(200.0F, 90.0F);
            PointF[] ptsArray =
            {
                pt1, pt2, pt3, pt4, pt5
            };
            // Draw curve
            g.DrawCurve(bluePen, ptsArray);
            // Dispose of object
            bluePen.Dispose();
        }

Contoh2_13 Drawing Curves dengan Tension

private float tension = 0.5F;

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            // Create a pen
            Pen bluePen = new Pen(Color.Blue, 1);
            // Create an array of points
            PointF pt1 = new PointF(40.0F, 50.0F);
            PointF pt2 = new PointF(50.0F, 75.0F);
            PointF pt3 = new PointF(100.0F, 115.0F);
            PointF pt4 = new PointF(200.0F, 180.0F);
            PointF pt5 = new PointF(200.0F, 90.0F);
            PointF[] ptsArray =
            {
                pt1, pt2, pt3, pt4, pt5
            };
            // Draw curve
            g.DrawCurve(bluePen, ptsArray,tension);
            // Dispose of object
            bluePen.Dispose();
        }

        private void btnApply_Click(object sender, EventArgs e)
        {
            tension = (float)Convert.ToDouble(txtTension.Text);
            Invalidate();
        }

Contoh2_14 Drawing Closed Curve

private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            // Create a pen
            Pen bluePen = new Pen(Color.Blue, 1);
            // Create an array of points
            PointF pt1 = new PointF(40.0F, 50.0F);
            PointF pt2 = new PointF(50.0F, 75.0F);
            PointF pt3 = new PointF(100.0F, 115.0F);
            PointF pt4 = new PointF(200.0F, 180.0F);
            PointF pt5 = new PointF(200.0F, 90.0F);
            PointF[] ptsArray =
            {
                pt1, pt2, pt3, pt4, pt5
            };
            // Draw curve
            g.DrawClosedCurve(bluePen, ptsArray);
            // Dispose of object
            bluePen.Dispose();
        }

Drawing Polygon

Polygon adalah bentuk yang terdiri dari tiga atau lebih garis, misal: segitiga, dan kotak.

Contoh2_15 Drawing Polygon

private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            // Create pens
            Pen greenPen = new Pen(Color.Green, 2);
            Pen redPen = new Pen(Color.Red, 2);
            // Create points for polygon
            PointF p1 = new PointF(40.0F, 50.0F);
            PointF p2 = new PointF(60.0F, 70.0F);
            PointF p3 = new PointF(80.0F, 34.0F);
            PointF p4 = new PointF(120.0F, 180.0F);
            PointF p5 = new PointF(200.0F, 150.0F);
            PointF[] ptsArray =
            {
                p1, p2, p3, p4, p5
            };
            // Draw polygon
            g.DrawPolygon(greenPen, ptsArray);
            // Dispose of objects
            greenPen.Dispose();
            redPen.Dispose();
        }

Drawing Graphic Path

Graphic Path menghubungkan beberapa objek drawing seperti line, rectable, circle, dll.

Contoh2_16 Drawing Graphic Path

using System.Drawing;
using System.Drawing.Drawing2D;

private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            // Create a pen
            Pen greenPen = new Pen(Color.Green, 1);
            // Create a graphics path
            GraphicsPath path = new GraphicsPath();
            // Add a line to the path
            path.AddLine(20, 20, 103, 80);
            // Add an ellipse to the path
            path.AddEllipse(100, 50, 100, 100);
            // Add three more lines
            path.AddLine(195, 80, 300, 80);
            path.AddLine(200, 100, 300, 100);
            path.AddLine(195, 120, 300, 120);
            // Create a rectangle and call
            // AddRectangle
            Rectangle rect =
              new Rectangle(50, 150, 300, 50);
            path.AddRectangle(rect);
            // Draw path
            g.DrawPath(greenPen, path);
            // Dispose of object
            greenPen.Dispose();
        }

Drawing Pie Shapes

image

Contoh2_17 Drawing Pie Chart

image

private void btnDraw_Click(object sender, EventArgs e)
        {
            // Create a Graphics object
            Graphics g = this.CreateGraphics();
            g.Clear(this.BackColor);
            // Get the current value of start and sweep
            // angles
            float startAngle =
              (float)Convert.ToDouble(textBox1.Text);
            float sweepAngle =
              (float)Convert.ToDouble(textBox2.Text);
            // Create a pen
            Pen bluePen = new Pen(Color.Blue, 1);
            // Draw pie
            g.DrawPie(bluePen, 20, 20, 100, 100,
              startAngle, sweepAngle);
            // Dispose of objects
            bluePen.Dispose();
            g.Dispose();
        }

 

bersambung Part 3…..

Pemrograman GDI+ dengan C# (Part 1)

Apa itu GDI+?

GDI+ adalah library pada .NET yang digunakan untuk membuat aplikasi grafis berbasis Windows dan Web yang dapat berinteraksi dengan perangkat grafis berupa printer atau monitor.

Graphical User Interface (GUI) berinteraksi dengan perangkat hardware seperti monitor, printer, atau scanner untuk menampilkan format yang dapat dibaca oleh manusia, tetapi tidak ada program yang dapat mengakses perangkat hardware tersebut secara langsung, maka dibuat user interface agar pengguna dapat berinteraksi dengan perangkat-perangkat tersebut.

Untuk membuat user interface tersebut harus digunakan third component sebagai jembatan antara program dan perangkat keras, maka dibuatlah komponen GDI+ library, dengan komponen tersebut anda dapat menampilkan output berupa text dan gambar ke perangkat hardware.

Pada aplikasi .NET anda dapat menggunakan GDI+ untuk membuat aplikasi grafis baik untuk aplikasi berbasi windows maupun aplikasi web. Library GDI+ sudah tersinstall secara default pada sistem operasi Windows XP, Vista, dan Windows 2003 yang berlokasi di class library dengan nama Gdiplus.dll. Gdiplus.dll.

image

 

Apa saja fitur GDI+?

Fitur GDI+ dapat kategorikan dalam 3 fungsi utama yaitu:

  • 2D vector graphic
  • Imaging
  • Typograhy

 

2D Vector Graphics Programming

Vector Graphic merupakan komponen pembentuk bentuk gambar mis (kotak, lingkaran) yang dibentuk dari kumpulan titik pada sistem koordinat.

Pada .NET Framework library 2D vector graphic programming dibagi menjadi dua kategori yaitu general dan advanced. General 2D vector graphic didefinisikan dalam library System.Drawing namespace dan advance function didefinisikan dalam library System.Drawing.Drawing2D namespace.

 

Imaging

Imaging digunakan untuk memanipulasi image. Image file yang dapat dimanipulasi misalnya .bmp, .jpg, .gif, dan .png. Fungsi-fungsi untuk memanipulasi images ada dalam Image class yang digunakan untuk create, save, dan load images.

 

Typography

Typography digunakan untuk mendesign dan merepresentasikan text. GDI+ menyediakan class untuk membuat dan menggunakan font.

 

GDI+ Namespaces dan Class dalam .NET

image

Area Drawing

Setiap aplikasi drawing paling tidak terdiri dari tiga komponen yaitu canvas, brush, pen, dan process

  • Canvas: adalah area dimana object akan digambar, misal pada aplikasi Windows, Windows Form adalah canvasnya.
  • Brush atau Pen merepresentasikan tekstur, warna, dan ukuran dari objek yang akan digambar pada canvas.
  • Process mendifinisikan bagaimana object tersebut akan digambar kedalam canvas.

Setiap area drawing memiliki empat property utama yaitu: weight, height, resolution dan color depth.

  • Width dan height property digunakan untuk medeskripsikan ukuran area drawing secara vertikal dan horizontal
  • Resolution adalah satuan untuk mengukur output quality dari graphic object atau images dalam satuan dot per inch (dpi). Sebagai contoh resolusi 72 dpi berarti 1 inch dari area tersebut terdiri dari 72 horizontal dan 72 vertical pixel. Untuk monitor resolusi 1280×1024 berarti pada area monitor tersebut terdiri dari 1280 horizontal pixel dan 1024 vertical pixel.
  • Color depth adalah jumlah warna yang digunakan untuk merepresentasikan setiap pixel.

Definisi dari pixel adalah: elemen terkecil pada proses drawing untuk menampilkan graphic object atau images pada layar. Pixel density sering direpresentasikan dengan nilai dpi (dot per inch).

Struktur color pada GDI+ mempunyai empat komponen warna yaitu: alpha, red, green, dan blue. Red green blue (RGB) komponen mewakili kombinasi warna yang akan muncul. Setiap komponen dalam RGB mempunyai 256 (28) color combination, sehingga kombinasi tiga komponen RGB tersebut mempunyai kemungkinan warna 256x256x256. Alpha komponen mewakili aspek transparan dari warna, yang akan terlihat ketika beberapa warna digabungkan.

image

Seperti yang terlihat pada gambar diatas, area drawing paling tidak harus mensupport 24-bit color system (8-bit untuk setiap R, G, dan B komponen).

 

Sistem Koordinat

Memahami sistem koordinat sangat penting untuk pemrograman graphic, sistem koordinat merepresentasikan letak graphic objet pada perangkat tampilan seperti monitor dan printer.

Sistem Koordinat Kartesian

Ini adalah koordinat umum yang anda pelajari pada pelajaran matematika dasar, terdiri dari sumbu x dan y

image

Posisi sitem koordinat kartesian dibagi menjadi beberapa kuadran:

  • Kuadran I: x > 0 dan y > 0
  • Kuadran II: x < 0 dan y > 0
  • Kuadran III: x < 0 dan y < 0
  • Kuadran IV: x > 0 dan y < 0

Sistem Koordinat Standar GDI+

Tidak seperti sistem kartesian, pada perangkat tampilan seperti monitor sumbu (0,0) terletak pada pojok kiri atas.

image

 

Aplikasi Pertama menggunakan GDI+

Sekarang saatnya anda untuk mencoba membuat aplikasi menggunakan library GDI+ menggunakan .NET Framework.

1. Pertama buat aplikasi windows form baru pada visual studio, beri nama projectnya contoh2_1

2. Untuk menggunakan GDI+ maka anda harus menambahkan referensi library kedalam program

using System.Drawing;
using System.Drawing.Drawing2D;

3. Untuk menggambar di form anda dapat menambahkan kode dalam method OnPaint.

private void Form1_Paint(object sender, PaintEventArgs e)
{
   //membuat instan class / objek dari class graphic
   Graphics g = e.Graphics;
} 

4. Untuk menambahkan object Pen, Brush, serta Drawing Shape kedalam form tambahkan kode sebagai berikut

private void Form1_Paint(object sender, PaintEventArgs e)
{
            //membuat instan class / objek dari class graphic
            Graphics g = e.Graphics;
            //set smothing mode pada area drawing
            g.SmoothingMode = SmoothingMode.AntiAlias;
            //membuat kotak dengan width 100 dan height 100
            Rectangle rect = new Rectangle(20, 20, 100, 100);
            //membuat objek pen berwarna merah
            Pen redPen = new Pen(Color.Red, 3);
            Pen blackPen = Pens.Black;
            //membuat objek solid brush
            SolidBrush greenBrush = new SolidBrush(Color.Green);
            
            //menggambar shape dan line
            g.DrawRectangle(redPen, rect);
            g.FillEllipse(greenBrush, rect);
            g.DrawLine(blackPen, 0, 250, this.Width, 250);
            g.FillEllipse(Brushes.Blue, 70, 220, 30, 30);
            g.FillEllipse(Brushes.SkyBlue, 100, 210, 40, 40);
            g.FillEllipse(Brushes.Green, 140, 200, 50, 50);
            g.FillEllipse(Brushes.Yellow, 190, 190, 60, 60);
            g.FillEllipse(Brushes.Violet, 250, 180, 70, 70);
            g.FillEllipse(Brushes.Red, 320, 170, 80, 80);
}

5.Jalankan program dengan menekan tombol F5 untuk melihat hasilnya.

 

Menggunakan Struktur Point dan PointF

Pada GDI+ point digunakan untuk mendefinisikan koordinat titik dua dimensi yang direpresentasikan sebagai matrix (x dan y koordinat) . ada tiga macam konstruktor yang dapat digunakan untuk membuat object point yaitu:

Point pt1 = new Point(10);
Point pt2 = new Point( new Size(20, 20) );
Point pt3 = new Point(30, 30);

Struktur PointF hampir sama dengan Point hanya saja nilai sumbu x dan y-nya tidak berupa integer melainkan floating point.

PointF pt3 = new PointF(30.0f, 30.0f);

Contoh 2_2 Penggunaan Struktur Point

private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;

            //membuat object point
            Point pt = new Point(50, 50);
            //membuat object point kosong
            Point newPoint = Point.Empty;
            newPoint.X = 100;
            newPoint.Y = 200;

            Pen pn = new Pen(Color.Blue, 4);
           
            //menggambar garis dari titik pt ke newPoint
            g.DrawLine(pn, pt, newPoint);

            pn.Dispose();
            g.Dispose();
        }

Menggunakan Struktur Rectangle

Struktur rectangle digunakan untuk membuat object rectangle di GDI+

Contoh2_3 Penggunaan Struktur Rectangle

private void Form1_Paint(object sender, PaintEventArgs e)
        {
            // Create a Graphics object
            Graphics g = this.CreateGraphics();
            int x = 40;
            int y = 40;
            int height = 120;
            int width = 120;
            // Create a Point object
            Point pt = new Point(80, 80);
            // Create a Size object
            Size sz = new Size(100, 100);
            // Create a rectangle from Point and Size
            Rectangle rect1 = new Rectangle(pt, sz);
            // Create a rectangle from integers
            Rectangle rect2 =
                new Rectangle(x, y, width, height);
            // Create a rectangle from direct integers
            Rectangle rect3 =
                new Rectangle(10, 10, 180, 180);
            // Create pens and brushes
            Pen redPen = new Pen(Color.Red, 2);
            SolidBrush greenBrush =
                new SolidBrush(Color.Blue);
            SolidBrush blueBrush =
                new SolidBrush(Color.Green);
            // Draw and fill rectangles
            g.DrawRectangle(redPen, rect3);
            g.FillRectangle(blueBrush, rect2);
            g.FillRectangle(greenBrush, rect1);
            // Dispose of the objects
            redPen.Dispose();
            blueBrush.Dispose();
            greenBrush.Dispose();
            g.Dispose();
        }

 

bersambung Part 2…