• Tentang Kami
  • Hubungi Kami
  • Kebijakan Privasi
  • Sangkalan
Masbilly.com
  • Beranda
  • Tutorial
    • Android
    • IOS
    • Windows
    • Photoshop
    • Komputer Jaringan
  • Media Sosial
    • Instagram
    • WhatsApp
    • Telegram
    • Facebook
    • Youtube
    • TikTok
  • Tech
    • Gadget
    • Komputer & Laptop
  • Games
    • Mobile
    • PC
  • Programing
    • MySQL
    • PHP
    • Java
    • C++
  • Spot News
No Result
View All Result
  • Beranda
  • Tutorial
    • Android
    • IOS
    • Windows
    • Photoshop
    • Komputer Jaringan
  • Media Sosial
    • Instagram
    • WhatsApp
    • Telegram
    • Facebook
    • Youtube
    • TikTok
  • Tech
    • Gadget
    • Komputer & Laptop
  • Games
    • Mobile
    • PC
  • Programing
    • MySQL
    • PHP
    • Java
    • C++
  • Spot News
No Result
View All Result
Masbilly.com
No Result
View All Result
Home Programing Java

Membuat Transformasi Refleksi Pada Java 2D – Java Reflections

Billy Afri Lorenzia by Billy Afri Lorenzia
February 11, 2023
in Java, Programing
0

Tentu teman – teman semua pasti pernah melihat kan sebuah efek transformasi refleksi pantulan gambar dipermukaan entah itu di sebuah web ataupun di sebuah aplikasi mobile dan desktop.

Jika kalian berfikir bahwa efek refleksi gambar tersebut hanya bisa dibuat dengan software editing gambar kalian salah besar, nyatanya pada bahasa pemrograman java sendiri juga bisa membuat efek refleksi pantulan gambar tersebut.

Di bahasa pemrograman java untuk membuat sebuah transformasi refleksi gambar pada dasarnya kita hanya mengambil gambar asli lalu kemudian menggambarnya lagi dengan posisi terbalik di skala -1 ke arah Y, kemudian memberinya sebuah refleksi memudar dibawah gambar.

Untuk melakukan itu semua kita perlu menggunakan AlphaComposite.

Baca juga : Cara Membuat Column Chart (Grafik Kolom) Java 2D Netbeans

Daftar isi : hide
Membuat Pantulan Tetapi Tidak dengan Efek Memudar.
Menambahkan Efek Fading

Membuat Pantulan Tetapi Tidak dengan Efek Memudar.

Pertama, kita akan menggambar sebuah contoh pantulan tetapi tidak dengan efek memudar. Kita asumsikan kita memiliki BufferedImage yang disebut gambar dan Graphics2D disebut g2d serta celah parameter yang memberikan jarak antara gambar dan pantulannya. Seperti ini contoh source code nya:

int imageWidth = image.getWidth();
int imageHeight = image.getHeight();
g2d.translate( x, y );
g2d.drawRenderedImage( image, null );
g2d.translate( 0, 2*imageHeight+gap );
g2d.scale( 1, -1 );
g2d.drawRenderedImage( image, null );

Menambahkan Efek Fading

Sekarang untuk menambahkan efek fading. Yang harus kita lakukan adalah menggambar refleksi dengan opacity seperti memudar kebawah.

Untuk membuatnya bisa dengan cara menggambar gradien transparan di atas gambar menggunakan komposit DST_IN.

Namun, ini tidak akan berfungsi ketika kita menggambar langsung ke objek Grafik asli kita karena itu akan membuat latar belakang transparan juga, jadi kita perlu membuat gambar perantara untuk membuat refleksi transparan dan kemudian menggambar gambar itu menggunakan Grafik asli kita.

Baca Juga:   Cara Membuat Form Input dan Output Sederhana dengan PHP Tanpa Database

Seperti ini contoh source code bagian refleksi memudar gambarnya :

BufferedImage reflection = new BufferedImage( imageWidth, imageHeight, BufferedImage.TYPE_INT_ARGB );
Graphics2D rg = reflection.createGraphics();
rg.drawRenderedImage( image, null );
rg.setComposite( AlphaComposite.getInstance( AlphaComposite.DST_IN ) );
rg.setPaint( 
   new GradientPaint( 
        0, imageHeight*fadeHeight, new Color( 0.0f, 0.0f, 0.0f, 0.0f ),
        0, imageHeight, new Color( 0.0f, 0.0f, 0.0f, opacity )
   )
);
rg.fillRect( 0, 0, imageWidth, imageHeight );
rg.dispose();
g2d.drawRenderedImage( reflection, null );

Dan dibawah ini adalah keseluruhan source code dari projek transformasi refleksi Java 2D, kalian tentu harus menyediakan sebuah gambar sendiri untuk direfleksikan.

import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;

/**
 *
 * @author billylorenzia
 */
public class Refleksi extends JComponent{

    private BufferedImage image;
    
    public Refleksi() {
        try {
            image = ImageIO.read( new File( "E:\reflection\namaGambar.png" ) );
        }
        catch ( Exception e ) {
            e.printStackTrace();
        }
        this.setPreferredSize(new Dimension(700, 700));
        this.setBackground(Color.white);
    }
    
    public void paintComponent( Graphics g ) {
        Graphics2D g2d = (Graphics2D)g; 
        
        int width = getWidth();
        int height = getHeight();
        int imageWidth = image.getWidth();
        int imageHeight = image.getHeight();
        int gap = 20;
        float opacity = 0.4f;
        float fadeHeight = 0.3f;

        g2d.setPaint( new GradientPaint( 0, 0, Color.black, 0, height, Color.darkGray ) );
        g2d.fillRect( 0, 0, width, height );
        g2d.translate( (width-imageWidth)/2, height/2-imageHeight );
        g2d.drawRenderedImage( image, null );
        g2d.translate( 0, 2*imageHeight+gap );
        g2d.scale( 1, -1 );
        BufferedImage reflection = new BufferedImage( imageWidth, imageHeight, BufferedImage.TYPE_INT_ARGB );
        Graphics2D rg = reflection.createGraphics();
        rg.drawRenderedImage( image, null );
        rg.setComposite( AlphaComposite.getInstance( AlphaComposite.DST_IN ) );
        rg.setPaint( 
            new GradientPaint( 
                0, imageHeight*fadeHeight, new Color( 0.0f, 0.0f, 0.0f, 0.0f ),
                0, imageHeight, new Color( 0.0f, 0.0f, 0.0f, opacity )
            )
        );
        rg.fillRect( 0, 0, imageWidth, imageHeight );
        rg.dispose();
        g2d.drawRenderedImage( reflection, null );
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setTitle("Refleksi");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
        Refleksi canvas = new Refleksi();
        
        frame.getContentPane().add(canvas);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
    
}

Berikut ini adalah tampilan gambar yang telah di refleksi.

refleksi java 2d, masbilly,

Demikian lah cara membuat transformasi refleksi pada Java 2D, semoga artikel ini dapat membantu kalian untuk lebih mengetahui apa itu java reflections.

Baca Juga:   Contoh Penggunaan Intent Explicit dan Implicit untuk Pindah antar Activity

Baca Juga : Cara Membuat Pola Persegi Dengan JAVA Graphics2D Netbeans

Sekian, semoga bermanfaat.

Thanks For Visiting ^_^
Masbilly.com
Tags: desktopjava
Previous Post

5 Daftar Game Google Doodle Terbaik Yang Cocok Untuk Mengisi Luang Waktu

Next Post

7 Aplikasi Kamera Android Terbaik dengan Fitur Terlengkap

Billy Afri Lorenzia

Billy Afri Lorenzia

Mahasiswa Teknik Informatika yang tertarik pada bidang Teknologi Komputer, Internet, Game, NFT & Cryptocurrency. Saat ini aktif sebagai Editor/Redaktur dan pemilik blog Masbilly.com

Next Post
aplikasi kamera android terbaik

7 Aplikasi Kamera Android Terbaik dengan Fitur Terlengkap

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Postingan Terbaru

Cara Mengaktifkan Kamera Laptop Windows 10

Cara Mengaktifkan Kamera Laptop Windows 10

March 25, 2023
Cara Mematikan Windows Defender di Windows 7, 8, dan 10

Cara Mematikan Windows Defender di Windows 7, 8, dan 10

March 24, 2023
Cara Screenshot di Laptop Windows 10

Cara Screenshot di Laptop Windows 10 Tanpa Aplikasi

March 23, 2023
Masbilly.com

Masbilly.com adalah blog Teknologi Informasi yang membahas tentang Tutorial, Tips & Trik, Programing dan Info Menarik lainnya.

Follow Us

  • Tentang Kami
  • Hubungi Kami
  • Kebijakan Privasi
  • Sangkalan

© 2022 Masbilly.com - All rights reserved.

No Result
View All Result
  • Beranda
  • Tutorial
    • Android
    • Windows
    • Photoshop
    • Komputer Jaringan
  • Media Sosial
    • Instagram
    • WhatsApp
    • TikTok
  • Tech
    • Gadget
    • Komputer & Laptop
  • Games
    • Mobile
    • PC
  • Programing
    • MySQL
    • PHP
    • Java
    • C++
  • Spot News

© 2022 Masbilly.com - All rights reserved.