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
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)
{
}
}
}
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;
}
}
}
}
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