Anda di halaman 1dari 5

Pertemuan ke-9: Transparency dan Clipping

1 Packages
Kelas-kelas utama pada Java 2D diorganisir dalam packages-packages berikut, yaitu:

1. java.awt
2. java.awt.geom
3. java.awt.font
4. java.awt.color
5. java.awt.image
6. java.awt.image.renderable
7. java.awt.print

1.1 java.awt
AWT merupakan singkatan dari Abstract Window Toolkit. Package ini terdiri dari kelas-kelas untuk men-
dukung pemrograman GUI (Graphical User Interface), termasuk didalamnya kelas-kelas untuk pemrogra-
man grafik 2D. Berikut adalah kelas-kelas yang terkait dengan Java 2D:

1. AlphaComposite
2. BasicStroke
3. Color
4. Composite
5. CompositeContext
6. Font
7. GradientPaint
8. Graphics2D
9. GraphicsConfiguration
10. GraphicsDevice
11. GraphicsEnvironment
12. Paint
13. PaintContext
14. Rectangle
15. Shape
16. Stroke
17. TexturePaint
18. Transparency

1
1.1.1 AlphaComposite
Kelas AlphaComposite membungkus (mengenkapsulasi) metode-metode untuk menggabungkan dan
menampilkan objek-objek grafik yang overlap. AlphaComposite juga dapat memiliki nilai alpha yang
menunjukkan derajat transparansi dari objek dimana nilai 0.0 artinya 100 % transparan, sedangkan 1.0
tidak transparan. Berikut contoh penggunaan AlphaComposite (Listing 1). Hasilnya dapat dilihat pada
Gambar 1 dan Gambar 2 (nilai alpha = 0.5).
Listing 1: Contoh penggunaan AlphaComposite
1 //import package yang diperlukan
2 import java.awt.*;
3 import java.awt.event.*;
4 import java.awt.geom.*;
5 import java.awt.image.*;
6 import javax.swing.*;
7
8 public class GrafikCanvas extends JPanel {
9 public GrafikCanvas() {
10 this.setPreferredSize(new Dimension(700, 500));
11 this.setBackground(Color.WHITE);
12 }
13 public void paintComponent(Graphics g) {
14 super.paintComponent(g);
15 Graphics2D g2 = (Graphics2D)g;
16
17 g2.setColor(Color.BLUE);
18 g2.drawString("DESTINATION (Rectangle)", 40, 20);
19 g2.setColor(Color.RED);
20 g2.drawString("SOURCE (Circle)", 300, 20);
21 g2.setColor(Color.BLACK);
22
23 drawComposite(g2, 0.5f);
24 }
25 public void drawComposite(Graphics2D g2, float alpha) {
26 //jenis-jenis alpha composite
27 int [] alphaComp = {
28 AlphaComposite.SRC, AlphaComposite.DST_IN,
29 AlphaComposite.DST_OUT, AlphaComposite.DST_OVER,
30 AlphaComposite.SRC_IN, AlphaComposite.SRC_OVER,
31 AlphaComposite.SRC_OUT, AlphaComposite.CLEAR
32 };
33 String [] caption = {
34 "SRC", "DST_IN", "DST_OUT", "DST_OVER",
35 "SRC_IN", "SRC_OVER", "SRC_OUT", "CLEAR"
36 };
37

38 // ambil objek alpha composite


39 int x, y;
40 x = y = 40;
41 AlphaComposite ac;
42 AlphaComposite tac =
43 AlphaComposite.getInstance(AlphaComposite.SRC, 1.0f);
44 for (int j = 0; j < alphaComp.length; j++) {
45 //nilai alpha composite
46 ac = AlphaComposite.getInstance(alphaComp[j], alpha);
47

2
48 //begin: composite demo
49 BufferedImage buffImg =
50 new BufferedImage(75, 80, BufferedImage.TYPE_INT_ARGB);
51 Graphics2D gbi = buffImg.createGraphics();
52
53 gbi.setColor(Color.BLUE);
54 gbi.fillRect(0, 0, 50, 50);
55
56 gbi.setColor(Color.RED);
57 gbi.setComposite(ac);
58 gbi.fillOval(25, 0, 50, 50);
59 //end: composite demo
60
61 //display image
62 g2.drawImage(buffImg, null, x, y);
63 g2.drawString(caption[j], x, y+70);
64
65 x += 80;
66 }
67 }
68 }

Figure 1: Demonstrasi kelas AlphaComposite

Figure 2: Demonstrasi kelas AlphaComposite dengan nilai α = 0.5

1.1.2 Clipping
Clipping area mendefinisikan area dari sebuah objek yang akan tampak ketika objek tersebut di-render.
Area yang berada diluar Clipping area, tidak akan ditampilkan pada saat proses rendering. Kode pada List 2
berikut mendemonstrasikan penggunaan clipping area yang dalam contoh ini menggunakan area lingkaran.
Hasil dari penerapan clipping area dapat dilihat pada Gambar 3.

3
Listing 2: Contoh Clipping Area
1 //import package yang diperlukan
2 import java.awt.*;
3 import java.awt.event.*;
4 import java.awt.geom.*;
5 import java.awt.image.*;
6 import javax.swing.*;
7 import javax.imageio.*;
8 import java.io.*;
9
10 public class GrafikCanvas extends JPanel {
11 public GrafikCanvas() {
12 this.setPreferredSize(new Dimension(700, 500));
13 this.setBackground(Color.WHITE);
14 }
15 public void paintComponent(Graphics g) {
16 super.paintComponent(g);
17 Graphics2D g2 = (Graphics2D)g;
18
19 try
20 {
21 BufferedImage img = ImageIO.read(new File(
22 "C:\\Documents and Settings\\All Users\\" +
23 "Documents\\My Pictures\\Sample Pictures\\sunset.jpg"
24 ));
25
26 //clip
27 Shape lingkaran = new Ellipse2D.Double(30, 30, 250, 250);
28 g2.clip(lingkaran);
29
30 g2.drawImage(img, 10, 10, 400, 300, null);
31 g2.setClip(null);
32 g2.drawString("Clipping: Sunset", 100, 350);
33
34 //image asli
35 g2.drawImage(img, 300, 10, 400, 300, null);
36 g2.drawString("Gambar asli: Sunset", 400, 350);
37
38 }
39 catch(Exception e)
40 {
41 }
42 }
43 }

4
Figure 3: Demonstrasi Clipping Area

Anda mungkin juga menyukai