Skip to content Skip to sidebar Skip to footer

Pertemuan 9 Transparency & Clipping Komputer Grafik

Pertemuan 9 
Transparency & Clipping


Dalam materi ini saya menjelaskan tentang clipping dan transparency
Coba diskusikan tentang Clipping pada java 2D dan sertakan contoh code dengan menggunakan image masing-masing.

Jawab : 
Clipping adalah memotong objek dengan bentuk tertentu. Sarana pemotong objek clipping window, dalam konteks grafika komputer, untuk melakukan clipping, kita lebih dulu harus menentukan bentuk window dan baru kemudian menentukan hanya objek yang terdapat di dalam window tersebut yang akan ditampilkan.
Bentuk clipping pun tidak harus lingkaran tergantung kita sendiri mau menentukan mengunakan bentuk apa, dibawah ini contoh bentuk clipping lingkaran yang sudah saya buat 
clipping
Contoh hasil Clipping


Terlihat dalam gambar bahwa bentuk asli dari gambar tersebut adalah persegi kemudia kita clipping kita hanya mengambil sebagian gambar dengan bentuk tertentu yaitu saya mengambil dengan bentuk lingkaran,
Untuk lebih jelas nya bisa kita lihat source code di bawah ini jika kalian mau mencoba untuk membuat nya



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Elerning;

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

public class cliping extends JPanel {
public cliping() {
this.setPreferredSize(new Dimension(700, 500));
this.setBackground(Color.DARK_GRAY);
 }
public static void main(String[] args) {
        // TODO code application logic here
        
        JFrame frame = new JFrame();
        frame.setTitle ("Elerning Cliping");
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        cliping panel = new cliping();
        frame.getContentPane().add(panel);
        frame.pack();
        frame.setVisible(true);
    }
 public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;

try
{
BufferedImage img = ImageIO.read(new File(
 "D:\\unpam.jpg"
 ));

 //clip
 Shape lingkaran = new Ellipse2D.Double(30, 30, 250, 250);
 g2.clip(lingkaran);

 g2.drawImage(img, 10, 10, 400, 300, null);
 g2.setClip(null);
 g2.drawString("Clipping: Sunset", 100, 350);

 //image asli
 g2.drawImage(img, 300, 10, 400, 300, null);
 g2.drawString("Gambar asli: Sunset", 400, 350);
 
 g2.setColor(Color.BLACK);
            g2.drawString("Dwi Sutikno", 15, 370);
            g2.drawString("06TPLE022", 15, 384);

 }
 catch(Exception e)
 {
 }
 }
 }

ini contoh source code clipping



kemudian berikutnya alphacoposite atau Transparency

Silakan diskusi kan tentang AlphaComposite dan sertakan hasil nya dari code yang ada di modul.
Jawab:
Dalam grafik komputer , alpha compositing adalah proses menggabungkan satu gambar dengan latar belakang untuk menciptakan tampilan transparansi parsial atau penuh. Seringkali berguna untuk membuat elemen gambar (piksel) dalam lintasan atau lapisan yang terpisah dan kemudian menggabungkan gambar 2D yang dihasilkan menjadi satu gambar final tunggal yang disebut komposit.
di bawah ini saya kasih contoh alphacomposite atau transparency



Terlihat perbedaan diantara kedua gambar tersebut, yaitu dengan mengatur tingkat transparan nya dengan cara merubah source code berikut ini :

bisa di coba perbedaan dengan angka lain

jika ingin mencoba nya berikut saya kasih source code nya agar bisa membedakan jika dirubah dengan angka lain 




/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Elerning;

/**
 *
 * @author lenovo
 */
import java.awt.*;
import java.awt.event.*;
 import java.awt.geom.*;
 import java.awt.image.*;
 import javax.swing.*;

 public class alpa extends JApplet {
     public static void main(String[] args) {
        // TODO code application logic here
        JFrame frame = new JFrame();
        frame.setTitle("ELERNING Alpha Composite");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JApplet applet = new alpa();
        applet.init();
        frame.getContentPane().add(applet);
        frame.pack();
        frame.setVisible(true);  
    }
     public void init() {
        JPanel panel = new Panel2D();
        getContentPane().add(panel);
    }
     class Panel2D extends JPanel {
        public Panel2D() {
            setPreferredSize(new Dimension(1000, 500));
            setBackground(Color.LIGHT_GRAY);
        }
 public void paintComponent(Graphics g) {
 super.paintComponent(g);
 Graphics2D g2 = (Graphics2D)g;

 g2.setColor(Color.BLUE);
 g2.drawString("DESTINATION (Rectangle)", 40, 20);
 g2.setColor(Color.RED);
 g2.drawString("SOURCE (Circle)", 300, 20);
 g2.setColor(Color.BLACK);

 drawComposite(g2, 0.5f);
 }
 public void drawComposite(Graphics2D g2, float alpha) {
 //jenis-jenis alpha composite
 int [] alphaComp = {
 AlphaComposite.SRC, AlphaComposite.DST_IN,
     AlphaComposite.DST_OUT, AlphaComposite.DST_OVER,
 AlphaComposite.SRC_IN, AlphaComposite.SRC_OVER,
 AlphaComposite.SRC_OUT, AlphaComposite.CLEAR
 };
 String [] caption = {
 "SRC", "DST_IN", "DST_OUT", "DST_OVER",
 "SRC_IN", "SRC_OVER", "SRC_OUT", "CLEAR"
 };

 // ambil objek alpha composite
 int x, y;
 x = y = 40;
 AlphaComposite ac;
 AlphaComposite tac =
 AlphaComposite.getInstance(AlphaComposite.SRC, 1.0f);
 for (int j = 0; j < alphaComp.length; j++) {
 //nilai alpha composite
 ac = AlphaComposite.getInstance(alphaComp[j], alpha);

 //begin: composite demo
 BufferedImage buffImg =
 new BufferedImage(75, 80, BufferedImage.TYPE_INT_ARGB);
 Graphics2D gbi = buffImg.createGraphics();

 gbi.setColor(Color.BLUE);
 gbi.fillRect(0, 0, 50, 50);

 gbi.setColor(Color.RED);
 gbi.setComposite(ac); gbi.fillOval(25, 0, 50, 50);
 //end: composite demo

 //display image
 g2.drawImage(buffImg, null, x, y);
 g2.drawString(caption[j], x, y+70);

 x += 80;
 }
 }
     }
 }

silahkan di kreasikan sendiri untuk melihat perbedaan transparency atau aphacomposite nya, yang saya kerjakan itu hanya basic contooh sederhana saja anda bisa mengembangkan jauh lebih menarik lagi,

Sekian cukup itu saja yang saya sampaikan pada pertemuan ini jika ada keslahan kata saya mohon maaf dan jika masih ada yang kurang jelaass silahkan ditanyakan di kolom komentar.

Terimakasih