Skip to main content

Grafika Komputer : Mewarnai Objek - Java

Kali ini akan ada tutorial grafika komputer untuk color boundary atau memberikan warna pada objek yang dibuat.
Grafika Komputer : Mewarnai Objek
Berikut adalah code-nya :

import java.awt.Color;
import java.awt.Point;
import java.awt.image.BufferedImage;
import java.util.Stack;
import javax.swing.ImageIcon;
import javax.swing.SwingUtilities;

public class DrawingPanel extends javax.swing.JFrame {

    BufferedImage img;

    public DrawingPanel() {
        initComponents();
        img = new BufferedImage(jLabel1.getWidth(), jLabel1.getHeight(), BufferedImage.TYPE_INT_RGB);
        jLabel1.setIcon(new ImageIcon(img));

    }

    public void colorRecursive(int x, int y, Color o, Color n) {
        
        if (img.getRGB(x, y) != n.getRGB() && img.getRGB(x, y) == o.getRGB()) {
            img.setRGB(x, y, n.getRGB());
            colorRecursive(x, y + 1, o, n);
            colorRecursive(x, y - 1, o, n);
            colorRecursive(x - 1, y, o, n);
            colorRecursive(x + 1, y, o, n);
        }
    }

    public void colorStack(int x, int y, Color o, Color n) {
        Stack stack = new Stack();
        stack.push(new Point(x, y));
        while (!stack.empty()) {
            Point point = stack.pop();
            int currentX = point.x;
            int currentY = point.y;

            int currentColor = img.getRGB(currentX, currentY);
            if (currentColor != n.getRGB() && currentColor == o.getRGB()) {
                img.setRGB(currentX, currentY, n.getRGB());

                stack.push(new Point(currentX + 1, currentY));
                stack.push(new Point(currentX - 1, currentY));
                stack.push(new Point(currentX, currentY + 1));
                stack.push(new Point(currentX, currentY - 1));
            }
        }
    }

    public void CirclePolar(int xc, int yc, int r) {
        double x, y;
        for (double i = 1.0 / r; i <= 2 * Math.PI; i += 1.0 / r) {
            y = yc + r * Math.sin(i);
            x = xc + r * Math.cos(i);
            img.setRGB((int) x, (int) y, Color.white.getRGB());
        }
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    //                           
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jLabel1.setBackground(new java.awt.Color(0, 0, 0));
        jLabel1.setForeground(new java.awt.Color(255, 255, 255));
        jLabel1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jLabel1MouseClicked(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
        );

        pack();
    }//                         

    private void jLabel1MouseClicked(java.awt.event.MouseEvent evt) {                                     
        // TODO add your handling code here:
   
        if(SwingUtilities.isLeftMouseButton(evt)){
            CirclePolar(evt.getX(), evt.getY(), 50);
        }
         if(SwingUtilities.isRightMouseButton(evt)){
           colorRecursive(evt.getX(), evt.getY(),Color.black, Color.yellow);
        }
        jLabel1.setIcon(new ImageIcon(img));
    }                                    

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(DrawingPanel.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(DrawingPanel.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(DrawingPanel.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(DrawingPanel.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new DrawingPanel().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JLabel jLabel1;
    // End of variables declaration                   
}


Grafika Komputer : Mewarnai Objek - Java

Catatan : Klik kiri untuk membuat objek lingkaran dan klik kanan untuk mewarnai objek.

Itulah cara Grafika Komputer : Mewarnai Objek - Java.

Comments

Popular posts from this blog

Pembahasan Dan Contoh Algoritma Array

Array adalah type data yang mengacu sekumpulan elemen  bertipe sama melalui indeks. Memiliki sifat tersusun secara terurut dan memiliki indeks. Contoh :   A : array[1..10] of char  TNamaHari : array[1..7] of string TJumHari : array[1..12] of integer Contoh Pemakaian Array Program NamaHari Kamus TNamaHari :  array[1..7] of string HariKe : integer Algoritma   TNamaHari[1]←”Senin”   TNamaHari[2]←”Selasa”   TNamaHari[3]←”Rabu”   TNamaHari[4]←”Kamis”   TNamaHari[5]←”Jumat”   TNamaHari[6]←”Sabtu”   TNamaHari[7]←”Minggu”   input (HariKe)   output(TNamaHari[HariKe]) Contoh di atas adalah contoh array dengan jumlah indeks 7, dan setiap indeks diisi dengan nama-nama hari. Mengisi array bisa dilakukan dengan membuat sistem/algoritma pengulangan sampai jumlah indeks array yang dibutuhkan atau tersedia. Lalu disetiap pengulangan dimasukan nilai data pada indeks array. Skema Pemrosesan Array Skema ...

Pemrograman Java : Cara getText dan setText Pada Java GUI

Pada Java GUI untuk mendapatkan text yang user input kamu harus mengambil text dari text area atau bisa juga text field. Untuk melakukannya bisa menggunakan fungsi getText() yang ada pada Java. getText() adalah fungsi yang ada pada Java untuk mengambil teks yang diinput pada form. Lalu untuk memunculkan sebuah teks pada text area atau text field  dapat menggunakan fungsi setText(). Akan diberikan contoh form sebagai berikut untuk lebih memahami penggunaan setText() dan getText() pada Java. Berikut adalah Cara getText dan setText Pada Java GUI : Buatlah form pada JFrame seperti gambar diatas. Caranya hanya tinggal klik kanan pada package yang diinginkan new-->JFrame Form... Lalu buat form seperti berikut: Berikan nama variabel pada text field  sesuai kegunaan. Contohnya text field  jurusan akan diberi nama variabel "jurusan". Caranya klik kanan pada text field yang dikehendaki lalu pilih Change variable name. Ini untuk memudahkan menggunaka...

Pemrograman Java : Cara Membuat Matriks Pada Java

Pengertian umum dari matriks adalah type data yang mengacu sekumpulan elemen bertipe sama melalui 2 indeks (baris & kolom). Atau ada juga yang mengartikan matriks sebagai array dua dimensi. Jika array satu dimensi hanya terdiri satu baris dan beberapa kolom sedangkan matriks memiliki baris dan kolom lebih dari satu. Jika ingin mendapat dasar pembahasan dan contoh algoritma matriks bisa dilihat pada artikel  Pembahasan Dan Contoh Algoritma Matriks . Dalam artikel tersebut dijelaskan konsep dasar dari algoritma matriks tanpa  berkaitan dengan bahasa pemrograman apapun. Kembali ke pembahasan kita kali ini, yaitu membuat Cara Membuat Matriks Pada Java. Berikut adalah code seluruh program dari pembuatan matriks pada java. import java.util.Scanner; public class Array { public static void main(String[] args) { int jumlahBaris, jumlahKolom; Scanner scanner = new Scanner(System.in); System.out.print("Masukan Jumlah indeks baris martriks...