Your SlideShare is downloading. ×
0
Drawing the Graphical Objects Sufian Idris, Marini Abu Bakar, Norleyza Jailani
Pengenalan <ul><li>Keupayaan melaksanakan operasi grafik disediakan dalam pakej  java.awt.   </li></ul><ul><li>Antara kemu...
Kelas  Graphics  Dan  Graphics2D   <ul><li>Pakej  java.awt  menyediakan kelas  Graphics.   </li></ul><ul><li>Objek  Graphi...
Kelas  Graphics2D   <ul><li>Java 1.2 menyediakan kelas  Graphics2D </li></ul><ul><li>merupakan subkelas di bawah kelas  Gr...
Kelas  Graphics2D <ul><li>Contoh:   </li></ul><ul><li>import javax.swing.*; </li></ul><ul><li>import java.awt.*; </li></ul...
Sistem Koordinat   <ul><li>Setiap bekas (objek  Container ) mempunyai sistem koordinatnya sendiri.   </li></ul><ul><li>Seb...
Sistem Koordinat
Warna Dan Teks   <ul><li>Untuk memapar suatu teks  s  pada koordinat ( x, y ), mesej : </li></ul><ul><ul><li>drawString(St...
Warna Dan Teks   <ul><li>Secara lalai, objek  Graphics  disetkan supaya melukis menggunakan warna hitam.  Untuk warna lain...
Contoh lagi.. <ul><li>import java.awt.*; </li></ul><ul><li>import javax.swing.*; </li></ul><ul><li>public class WarnaTeks ...
Contoh.. Bermula di  lokasi  (20,50)
Kelas  Color <ul><li>Terdapat beberapa warna yang sedia tertakrif dalam pustaka : </li></ul><ul><li>Color. white Color. li...
Kelas  FontMetrics   <ul><li>Kelas  Component  mempunyai metod  getFontMetrics(Font)   yang akan mengembalikan objek  Font...
Kelas  FontMetrics
Kelas  FontMetrics   <ul><li>Antara mesej yang boleh dihantar kepada objek  FontMetrics :   </li></ul><ul><ul><li>int stri...
Kelas  FontMetrics   <ul><ul><li>int getLeading()   </li></ul></ul><ul><ul><li>dapatkan nilai  leading  bagi fon yang berk...
Contoh.. <ul><ul><li>import java.awt.*; </li></ul></ul><ul><ul><li>import javax.swing.*; </li></ul></ul><ul><ul><li>public...
Contoh
Melukis Objek Asas <ul><li>Java2D menyediakan hirarki kelas  Shape  yang mengandungi berbagai kelas untuk berbagai jenis b...
Melukis Objek Asas <ul><li>Mesej berikut boleh dihantar kepada objek  Graphics2D  untuk melukis dan mewarna dalaman objek ...
Garis <ul><li>Suatu bentuk garis boleh diwakilkan sebagai suatu objek  Line2D.Float  atau  Line2D.Double.   </li></ul><ul>...
Garis <ul><li>Untuk mencipta suatu objek Line2D yang titik hujungnya (5, 10) dan (25, 40):   </li></ul><ul><li>Objek Line2...
Garis <ul><li>Mesej berikut difahami oleh objek Line2D:  </li></ul><ul><ul><li>setLine(float x1, float y1, float x2, float...
Contoh <ul><li>import java.awt.*; </li></ul><ul><li>import javax.swing.*; </li></ul><ul><li>import java.awt.geom.*; </li><...
Contoh.. <ul><li>import java.awt.*; </li></ul><ul><li>import javax.swing.*; </li></ul><ul><li>import java.awt.geom.*; </li...
Contoh..
<ul><li>Ketebalan garis yang dilukis boleh disetkan dengan menggantikan objek  Stroke  pada objek Graphics2D dengan objek ...
Contoh <ul><li>import java.awt.*; </li></ul><ul><li>import javax.swing.*; </li></ul><ul><li>import java.awt.geom.*; </li><...
Ketebalan Garis <ul><li>Garis kedua dilukis menggunakan objek  BasicStroke  dengan ketebalan 10 </li></ul><ul><li>g2d.setS...
Segiempat <ul><li>Kelas Rectangle2D disediakan untuk bentuk segiempat.  Ia mengandungi dua kelas dalaman iaitu Rectangle2D...
Segiempat <ul><li>Mesej berikut difahami oleh objek Rectangle2D:  </li></ul><ul><ul><li>setRect(float x, float y, float w,...
Segiempat
Contoh.. <ul><li>import java.awt.*; </li></ul><ul><li>import javax.swing.*; </li></ul><ul><li>import java.awt.geom.*; </li...
Output:
Latihan <ul><li>Diberi bentuk dibawah:  </li></ul><ul><li>Tulis satu aturcara java bagi mendapatkan bentuk di atas. </li><...
Segiempat Bucu Melengkung
Segiempat Bucu Melengkung   <ul><li>Kelas yang digunakan:  RoundRectangle2D .  </li></ul><ul><li>Untuk mencipta objeknya: ...
Elips
Elips <ul><li>Boleh digunakan untuk melukis  bulatan  iaitu dengan setkan  tinggi = lebar </li></ul><ul><li>Untuk mencipta...
Elipse <ul><li>Mesej berikut difahami oleh objek  Ellipse2D :  </li></ul><ul><ul><li>setFrame(float x, float y, float w, f...
Contoh <ul><li>import java.awt.*; </li></ul><ul><li>import javax.swing.*; </li></ul><ul><li>import java.awt.geom.*; </li><...
Output:
Latihan <ul><li>Diberi bentuk dibawah:  </li></ul><ul><li>Tulis satu aturcara java bagi mendapatkan bentuk di atas. </li><...
Lengkuk <ul><li>Lengkuk boleh diwakilkan sebagai objek  Arc2D.   </li></ul>
Lengkuk <ul><li>Untuk mencipta objeknya: </li></ul><ul><ul><li>new Arc2D.Float( x, y, lebar, tinggi, sudutMula, sudutLengk...
Lengkuk <ul><li>Arc2D.OPEN  Arc2D.PIE    Arc2D.CHORD </li></ul>
Mr Packman <ul><li>import java.awt.*; </li></ul><ul><li>import javax.swing.*; </li></ul><ul><li>import java.awt.geom.*; </...
Mr Packman <ul><li>public void paint(Graphics g) { </li></ul><ul><li>Graphics2D g2d = (Graphics2D) g; </li></ul><ul><li>Ar...
Output: Mr Packman
Poligon Dan Poligaris <ul><li>Poligon  : bentuk yang terdiri daripada segmen garis yang membentuk ruang tertutup   </li></...
Poligon Dan Poligaris <ul><li>Mesej yang difahami oleh objek GeneralPath: </li></ul><ul><ul><li>moveTo(x, y)  :tambah bucu...
Contoh: <ul><li>import java.awt.*; </li></ul><ul><li>import javax.swing.*; </li></ul><ul><li>import java.awt.geom.*; </li>...
Output: Koordinat mula (90,90)
Contoh  Butang Elips di klik
Contoh
<ul><li>public class Lukis extends JApplet implements ActionListener{ </li></ul><ul><li>private int x,y; </li></ul><ul><li...
<ul><li>public void actionPerformed(ActionEvent e){ </li></ul><ul><li>s = e.getActionCommand(); </li></ul><ul><li>if(s.equ...
<ul><li>else </li></ul><ul><li>{ </li></ul><ul><li>String inputDatax = JOptionPane.showInputDialog  (null,&quot;koordinat ...
<ul><li>class PaparanGrafik extends JPanel { </li></ul><ul><li>private int tinggi,lebar,jejari; </li></ul><ul><li>private ...
Upcoming SlideShare
Loading in...5
×

13 Grafik

752

Published on

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
752
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
46
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "13 Grafik"

  1. 1. Drawing the Graphical Objects Sufian Idris, Marini Abu Bakar, Norleyza Jailani
  2. 2. Pengenalan <ul><li>Keupayaan melaksanakan operasi grafik disediakan dalam pakej java.awt. </li></ul><ul><li>Antara kemudahan yang disediakan: melukis berbagai jenis bentuk berwarna, memapar imej, animasi. </li></ul>
  3. 3. Kelas Graphics Dan Graphics2D <ul><li>Pakej java.awt menyediakan kelas Graphics. </li></ul><ul><li>Objek Graphics mengandungi maklumat yang digunakan dalam melaksanakan operasi grafik. </li></ul><ul><li>Operasi grafik dilaksanakan dengan menghantar mesej tertentu kepada objek ini, antaranya: </li></ul><ul><ul><li>drawString(String, int, int) </li></ul></ul><ul><ul><li>drawRect(int, int, int, int) </li></ul></ul><ul><ul><li>setColor(Color) </li></ul></ul><ul><ul><li>setFont(Font) </li></ul></ul>
  4. 4. Kelas Graphics2D <ul><li>Java 1.2 menyediakan kelas Graphics2D </li></ul><ul><li>merupakan subkelas di bawah kelas Graphics. </li></ul><ul><li>mengandungi fitur tambahan yang lebih canggih yang tidak terdapat dalam kelas induknya. </li></ul><ul><li>metod paint() masih menerima objek Graphics sebagai parameter. </li></ul>
  5. 5. Kelas Graphics2D <ul><li>Contoh: </li></ul><ul><li>import javax.swing.*; </li></ul><ul><li>import java.awt.*; </li></ul><ul><li>public class Grafik extends JApplet { </li></ul><ul><ul><li>public void paint(Graphics g) { </li></ul></ul><ul><ul><li>Graphics2D g2d = (Graphics2D) g; </li></ul></ul><ul><ul><li>g2d.drawString(&quot;Menggunakan Kelas Graphics2d&quot;, 10, 20); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><li>} </li></ul>Bermula di lokasi (10,20) Acukan objek g supaya kita boleh Menggunakan ciri-ciri Graphics2d
  6. 6. Sistem Koordinat <ul><li>Setiap bekas (objek Container ) mempunyai sistem koordinatnya sendiri. </li></ul><ul><li>Sebarang titik pada bekas boleh diwakilkan sebagai koordinat ( x , y ). </li></ul><ul><li>Dalam AWT, nilai x dan y bagi koordinat ( x , y ) mestilah berjenis integer. </li></ul>
  7. 7. Sistem Koordinat
  8. 8. Warna Dan Teks <ul><li>Untuk memapar suatu teks s pada koordinat ( x, y ), mesej : </li></ul><ul><ul><li>drawString(String s, int x, int y) boleh dihantar kepada objek Graphics. </li></ul></ul><ul><li>g2d.drawString(&quot;Apa khabar?&quot;, 10, 50); </li></ul>“ Apa Khabar” di lokasi (10,50)
  9. 9. Warna Dan Teks <ul><li>Secara lalai, objek Graphics disetkan supaya melukis menggunakan warna hitam. Untuk warna lain, hantar mesej setPaint(Color) kepada objek itu dahulu. </li></ul><ul><ul><li>g2d.setPaint(Color.red); </li></ul></ul><ul><ul><li>g2d.drawString(&quot;Apa khabar?&quot;, 10, 50); </li></ul></ul>
  10. 10. Contoh lagi.. <ul><li>import java.awt.*; </li></ul><ul><li>import javax.swing.*; </li></ul><ul><li>public class WarnaTeks extends JApplet { </li></ul><ul><li>public void paint(Graphics g) { </li></ul><ul><li>Graphics2D g2d = (Graphics2D) g; </li></ul><ul><li>g2d.setPaint(Color.blue); </li></ul><ul><li>g2d.drawString(&quot;Grafik Java&quot;, 20, 50); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  11. 11. Contoh.. Bermula di lokasi (20,50)
  12. 12. Kelas Color <ul><li>Terdapat beberapa warna yang sedia tertakrif dalam pustaka : </li></ul><ul><li>Color. white Color. lightGray </li></ul><ul><li>Color. gray Color. darkGray </li></ul><ul><li>Color.black Color. red </li></ul><ul><li>Color. pink Color. blue </li></ul><ul><li>Color. orange Color. yellow </li></ul><ul><li>Color. green Color. magenta </li></ul><ul><li>Color. cyan </li></ul>
  13. 13. Kelas FontMetrics <ul><li>Kelas Component mempunyai metod getFontMetrics(Font) yang akan mengembalikan objek FontMetrics untuk suatu fon. </li></ul><ul><ul><li>Font fon = new Font(&quot;TimesRoman&quot;, Font.PLAIN, 14); </li></ul></ul><ul><ul><li>FontMetrics fm = getFontMetrics(fon); </li></ul></ul>
  14. 14. Kelas FontMetrics
  15. 15. Kelas FontMetrics <ul><li>Antara mesej yang boleh dihantar kepada objek FontMetrics : </li></ul><ul><ul><li>int stringWidth(String str) </li></ul></ul><ul><ul><li>dapatkan lebar rentetan str bagi fon yang berkenaan int </li></ul></ul><ul><ul><li>getAscent() </li></ul></ul><ul><ul><li>dapatkan nilai ascent bagi fon yang berkenaan int </li></ul></ul><ul><ul><li>getDescent() </li></ul></ul><ul><ul><li>dapatkan nilai descent bagi fon yang berkenaan </li></ul></ul><ul><ul><li>int getHeight() </li></ul></ul><ul><ul><li>dapatkan nilai tinggi fon yang berkenaan </li></ul></ul>
  16. 16. Kelas FontMetrics <ul><ul><li>int getLeading() </li></ul></ul><ul><ul><li>dapatkan nilai leading bagi fon yang berkenaan </li></ul></ul><ul><ul><li>int getMaxAscent() </li></ul></ul><ul><ul><li>dapatkan nilai maksimum ascent (iaitu ascent + leading ) bagi fon yang berkenaan </li></ul></ul><ul><ul><li>int getMaxDescent() </li></ul></ul><ul><ul><li>dapatkan nilai maksimum descent (iaitu descent + leading )bagi fon yang berkenaan </li></ul></ul>
  17. 17. Contoh.. <ul><ul><li>import java.awt.*; </li></ul></ul><ul><ul><li>import javax.swing.*; </li></ul></ul><ul><ul><li>public class FonMetrik extends JApplet { </li></ul></ul><ul><ul><li>public void paint(Graphics g) { </li></ul></ul><ul><ul><ul><li>Graphics g2d = (Graphics2D) g; </li></ul></ul></ul><ul><ul><ul><li>Font fon = new Font(&quot;SanSerif&quot;, Font.PLAIN, 14); </li></ul></ul></ul><ul><ul><ul><li>FontMetrics metrik = getFontMetrics(fon); </li></ul></ul></ul><ul><ul><ul><li>String str1 = &quot;Selamat &quot;; </li></ul></ul></ul><ul><ul><ul><li>int lebar_str1 = metrik.stringWidth(str1); </li></ul></ul></ul><ul><ul><ul><li>g2d.setFont(fon); </li></ul></ul></ul><ul><ul><ul><li>g2d.setPaint(Color.blue); </li></ul></ul></ul><ul><ul><ul><li>g2d.drawString(str1, 50, 50); </li></ul></ul></ul><ul><ul><ul><li>g2d.setFont(new Font(&quot;Serif&quot;, Font.BOLD+Font.ITALIC, 24)); </li></ul></ul></ul><ul><ul><ul><li>g2d.setPaint(Color.red); </li></ul></ul></ul><ul><ul><ul><li>g2d.drawString(&quot;Maju Jaya&quot;, 50+lebar_str1, 50); </li></ul></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>} </li></ul></ul>Dapatkan lebar str1 Melukis maju jaya di lokasi selepas str1
  18. 18. Contoh
  19. 19. Melukis Objek Asas <ul><li>Java2D menyediakan hirarki kelas Shape yang mengandungi berbagai kelas untuk berbagai jenis bentuk. Antara subkelas di bawah kelas Shape: </li></ul><ul><ul><li>Line2D, </li></ul></ul><ul><ul><li>Rectangle2D, RoundRectangle2D, </li></ul></ul><ul><ul><li>Ellipse2D, Arc2D, QuadCurve2D, </li></ul></ul><ul><ul><li>CubicCurve2D, GeneralPath. </li></ul></ul>
  20. 20. Melukis Objek Asas <ul><li>Mesej berikut boleh dihantar kepada objek Graphics2D untuk melukis dan mewarna dalaman objek Shape: </li></ul><ul><ul><li>void draw(Shape btk) </li></ul></ul><ul><ul><li>melukis kerangka bentuk btk </li></ul></ul><ul><ul><li>void fill(Shape btk) </li></ul></ul><ul><ul><li>mewarnakan dalaman bentuk btk </li></ul></ul>
  21. 21. Garis <ul><li>Suatu bentuk garis boleh diwakilkan sebagai suatu objek Line2D.Float atau Line2D.Double. </li></ul><ul><li>Kedua-dua kelas Line2D.Float dan Line2D.Double adalah kelas dalaman ( inner classes ) bagi kelas Line2D. </li></ul><ul><li>Bagi Line2D.Float, koordinat titik hujungnya berjenis float </li></ul><ul><li>Manakala, bagi Line2D.Double, berjenis double. </li></ul>
  22. 22. Garis <ul><li>Untuk mencipta suatu objek Line2D yang titik hujungnya (5, 10) dan (25, 40): </li></ul><ul><li>Objek Line2D boleh dicipta tanpa sebarang parameter. Untuk kes ini, koordinat titik hujungnya adalah (0,0) dan (0, 0) </li></ul>new Line2D.Float(5, 10, 25, 40) ATAU new Line2D.Double(5, 10, 25, 40)
  23. 23. Garis <ul><li>Mesej berikut difahami oleh objek Line2D: </li></ul><ul><ul><li>setLine(float x1, float y1, float x2, float y2) </li></ul></ul><ul><ul><li>setLine(double x1, double y1, double x2, double y2) </li></ul></ul><ul><li>setkan koordinat titik hujung kepada (x1, y1) dan (x2, y2) </li></ul>
  24. 24. Contoh <ul><li>import java.awt.*; </li></ul><ul><li>import javax.swing.*; </li></ul><ul><li>import java.awt.geom.*; </li></ul><ul><li>public class DemoGaris2 extends JApplet { </li></ul><ul><li>public void paint(Graphics g) { </li></ul><ul><li>Graphics2D g2d = (Graphics2D) g; </li></ul><ul><li>Line2D.Double garis = new Line2D.Double(10, 10, 100, 10); </li></ul><ul><li>g2d.draw(garis); </li></ul><ul><li>// atau g2d.draw(new Line2D.Double(10, 10, 100, 10)); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>(10,10) (100,10)
  25. 25. Contoh.. <ul><li>import java.awt.*; </li></ul><ul><li>import javax.swing.*; </li></ul><ul><li>import java.awt.geom.*; </li></ul><ul><li>public class DemoGaris1 extends JApplet { </li></ul><ul><li>private static final int jarak = 10; </li></ul><ul><li>public void paint(Graphics g) { </li></ul><ul><ul><li>Line2D.Double garis = new Line2D.Double(); </li></ul></ul><ul><ul><li>Graphics2D g2d = (Graphics2D) g; </li></ul></ul><ul><ul><li>g2d.setPaint(Color.blue); </li></ul></ul><ul><ul><li>int lebarAplet = getSize().width; </li></ul></ul><ul><ul><li>int tinggiAplet = getSize().height; </li></ul></ul><ul><ul><li>for (int i=0; i < tinggiAplet; i += jarak) { </li></ul></ul><ul><ul><ul><li>garis.setLine(0, i, lebarAplet, i); </li></ul></ul></ul><ul><ul><ul><li>g2d .draw(garis); } </li></ul></ul></ul><ul><ul><li>for (int i=0; i < lebarAplet; i += jarak) { </li></ul></ul><ul><ul><ul><li>garis.setLine(i, 0, i, tinggiAplet); </li></ul></ul></ul><ul><ul><ul><li>g2d.draw(garis); } </li></ul></ul></ul><ul><li>} </li></ul><ul><li>} </li></ul>Melukis garis menegak Melukis garis melintang
  26. 26. Contoh..
  27. 27. <ul><li>Ketebalan garis yang dilukis boleh disetkan dengan menggantikan objek Stroke pada objek Graphics2D dengan objek Stroke yang berkenaan </li></ul><ul><li>Contoh: </li></ul><ul><ul><li>Graphics2D g2d = (Graphics2D) g; </li></ul></ul><ul><ul><li>Line2D.Double garis = new Line2D.Double(10, 10, 100, 10); </li></ul></ul><ul><ul><li>g2d.draw(garis); </li></ul></ul><ul><ul><li>g2d.setStroke(new BasicStroke(10)); </li></ul></ul><ul><ul><li>garis = new Line2D.Double(10, 30, 100, 30); </li></ul></ul><ul><ul><li>g2d.draw(garis); </li></ul></ul>Ketebalan Garis
  28. 28. Contoh <ul><li>import java.awt.*; </li></ul><ul><li>import javax.swing.*; </li></ul><ul><li>import java.awt.geom.*; </li></ul><ul><li>public class DemoGaris2 extends JApplet { </li></ul><ul><li>public void paint(Graphics g) { </li></ul><ul><li>Graphics2D g2d = (Graphics2D) g; </li></ul><ul><li>Line2D.Double garis = new Line2D.Double(10, 10, 100, 10); </li></ul><ul><li>g2d.draw(garis); </li></ul><ul><li>g2d.setStroke(new BasicStroke(10)); </li></ul><ul><li>garis = new Line2D.Double(10, 30, 100, 30); </li></ul><ul><li>g2d.draw(garis); </li></ul><ul><li>garis = new Line2D.Double(0, 0,0, 0); </li></ul><ul><li>g.setColor(Color.blue); </li></ul><ul><li>g2d.draw(garis); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  29. 29. Ketebalan Garis <ul><li>Garis kedua dilukis menggunakan objek BasicStroke dengan ketebalan 10 </li></ul><ul><li>g2d.setStroke(new BasicStroke(10)); </li></ul><ul><li>garis = new Line2D.Double(10, 30, 100, 30); </li></ul><ul><li>g2d.draw(garis); </li></ul>Garis ketiga sebagai titik di (0,0) dengan ketebalan 10, berwarna biru garis = new Line2D.Double(0, 0,0,0); g.setColor(Color.blue); g2d.draw(garis); Garis pertama Line2D.Double garis = new Line2D.Double(10, 10, 100, 10); g2d.draw(garis);
  30. 30. Segiempat <ul><li>Kelas Rectangle2D disediakan untuk bentuk segiempat. Ia mengandungi dua kelas dalaman iaitu Rectangle2D.Float dan Rectangle2D.Double. </li></ul><ul><li>Untuk mencipta objek Rectangle2D, sama ada : </li></ul><ul><ul><li>new Rectangle2D.Float(x, y, lebar, tinggi) </li></ul></ul><ul><ul><li>ATAU </li></ul></ul><ul><ul><li>new Rectangle2D.Double(x, y, lebar, tinggi) </li></ul></ul>
  31. 31. Segiempat <ul><li>Mesej berikut difahami oleh objek Rectangle2D: </li></ul><ul><ul><li>setRect(float x, float y, float w, float h) </li></ul></ul><ul><ul><li>setRect(double x, double y, double w, double h) </li></ul></ul><ul><ul><li>setkan bucu atas kiri kepada (x, y) dan lebar </li></ul></ul><ul><ul><li>dan tinggi masing-masing kepada w dan h. </li></ul></ul>
  32. 32. Segiempat
  33. 33. Contoh.. <ul><li>import java.awt.*; </li></ul><ul><li>import javax.swing.*; </li></ul><ul><li>import java.awt.geom.*; </li></ul><ul><li>public class DemoSegiempat1 extends JApplet { </li></ul><ul><li>private static final int SAIZ = 30; </li></ul><ul><li>private static final int SELANG = 5; </li></ul><ul><li>private static final int X_AWAL = 20; </li></ul><ul><li>private static final int Y_BARIS = 10; </li></ul><ul><li>private static final int BILSEGI4 = 10; </li></ul><ul><li>public void paint(Graphics g) { </li></ul><ul><ul><li>Graphics2D g2d = (Graphics2D) g; </li></ul></ul><ul><ul><li>int x = X_AWAL; </li></ul></ul><ul><ul><li>Rectangle2D.Double segi4 = new Rectangle2D.Double(); </li></ul></ul><ul><ul><li>for (int i=1; i <= BILSEGI4; i++) { </li></ul></ul><ul><ul><ul><li>segi4.setRect(x, Y_BARIS, SAIZ, SAIZ); </li></ul></ul></ul><ul><ul><ul><li>g2d.draw(segi4); </li></ul></ul></ul><ul><ul><ul><li>x += (SAIZ+SELANG); </li></ul></ul></ul><ul><li>}}} </li></ul>Melukis segiempat Menambah selang jarak arah x
  34. 34. Output:
  35. 35. Latihan <ul><li>Diberi bentuk dibawah: </li></ul><ul><li>Tulis satu aturcara java bagi mendapatkan bentuk di atas. </li></ul>20 20 60 100 140 60 100
  36. 36. Segiempat Bucu Melengkung
  37. 37. Segiempat Bucu Melengkung <ul><li>Kelas yang digunakan: RoundRectangle2D . </li></ul><ul><li>Untuk mencipta objeknya: </li></ul><ul><ul><li>new RoundRectangle2D.Float( x, y, lebar, tinggi, lebarLengkuk, tinggiLengkuk ) </li></ul></ul><ul><li>ATAU </li></ul><ul><ul><li>new RoundRectangle2D.Float( x, y, lebar, tinggi, lebarLengkuk, tinggiLengkuk ) </li></ul></ul>
  38. 38. Elips
  39. 39. Elips <ul><li>Boleh digunakan untuk melukis bulatan iaitu dengan setkan tinggi = lebar </li></ul><ul><li>Untuk mencipta objeknya: </li></ul><ul><ul><li>new Ellipse2D.Float(x, y, lebar, tinggi) </li></ul></ul><ul><ul><li>ATAU </li></ul></ul><ul><ul><li>new Ellipse2D.Double(x, y, lebar, tinggi) </li></ul></ul>
  40. 40. Elipse <ul><li>Mesej berikut difahami oleh objek Ellipse2D : </li></ul><ul><ul><li>setFrame(float x, float y, float w, float h) </li></ul></ul><ul><ul><li>setFrame(double x, double y, double w, double h) </li></ul></ul><ul><li>setkan bucu atas kiri, lebar dan tinggi masing-masing kepada (x, y), w dan h. </li></ul>
  41. 41. Contoh <ul><li>import java.awt.*; </li></ul><ul><li>import javax.swing.*; </li></ul><ul><li>import java.awt.geom.*; </li></ul><ul><li>public class DemoElips2 extends JApplet { </li></ul><ul><li>private static final int SAIZ = 50; </li></ul><ul><li>private static final int SELANG = 10; </li></ul><ul><li>private static final int X_AWAL = 20; </li></ul><ul><li>private static final int Y_BARIS = 10; </li></ul><ul><li>private static final int BIL_ELIPS = 5; </li></ul><ul><li>public void paint(Graphics g) { </li></ul><ul><li>Graphics2D g2d = (Graphics2D) g; </li></ul><ul><li>int x = X_AWAL; </li></ul><ul><li>Ellipse2D.Double elips = new Ellipse2D.Double(); </li></ul><ul><li>for (int i=1; i <= BIL_ELIPS; i++) { </li></ul><ul><li>elips.setFrame(x, Y_BARIS, SAIZ, SAIZ); </li></ul><ul><li>g2d.setPaint(Color.red); </li></ul><ul><li>g2d.setStroke(new BasicStroke(i)); </li></ul><ul><li>g2d.draw(elips); </li></ul><ul><li>x += (SAIZ-SELANG); } } } </li></ul>Melukis elips Menambah selang jarak arah x Menambah ketebalan
  42. 42. Output:
  43. 43. Latihan <ul><li>Diberi bentuk dibawah: </li></ul><ul><li>Tulis satu aturcara java bagi mendapatkan bentuk di atas. </li></ul>20 20 60 140 60 100 80
  44. 44. Lengkuk <ul><li>Lengkuk boleh diwakilkan sebagai objek Arc2D. </li></ul>
  45. 45. Lengkuk <ul><li>Untuk mencipta objeknya: </li></ul><ul><ul><li>new Arc2D.Float( x, y, lebar, tinggi, sudutMula, sudutLengkuk, jenis ) </li></ul></ul><ul><ul><li>ATAU </li></ul></ul><ul><ul><li>new Arc2D.Double( x, y, lebar, tinggi, sudutMula, sudutLengkuk, jenis ) </li></ul></ul><ul><ul><li>jenis boleh dispesifikasikan sebagai Arc2D.OPEN, Arc2D.PIE atau Arc2D.CHORD </li></ul></ul>
  46. 46. Lengkuk <ul><li>Arc2D.OPEN Arc2D.PIE Arc2D.CHORD </li></ul>
  47. 47. Mr Packman <ul><li>import java.awt.*; </li></ul><ul><li>import javax.swing.*; </li></ul><ul><li>import java.awt.geom.*; </li></ul><ul><li>public class DemoLengkuk3 extends JApplet { </li></ul><ul><li>private static final int X_TT_KPL = 100; </li></ul><ul><li>private static final int Y_TT_KPL = 100; </li></ul><ul><li>private static final int X_TT_MATA = 100; </li></ul><ul><li>private static final int Y_TT_MATA = 80; </li></ul><ul><li>private static final int JEJARI_KPL = 50; </li></ul><ul><li>private static final int JEJARI_MATA = 5; </li></ul><ul><li>private static final int SUDUTMULA = 30; </li></ul>
  48. 48. Mr Packman <ul><li>public void paint(Graphics g) { </li></ul><ul><li>Graphics2D g2d = (Graphics2D) g; </li></ul><ul><li>Arc2D kepala = new Arc2D.Double( </li></ul><ul><li>X_TT_KPL - JEJARI_KPL , </li></ul><ul><li>Y_TT_KPL - JEJARI_KPL , </li></ul><ul><li>2*JEJARI_KPL , 2*JEJARI_KPL , SUDUTMULA , </li></ul><ul><li>360-2*SUDUTMULA , Arc2D.PIE); </li></ul><ul><li>g2d.setPaint(Color.magenta); </li></ul><ul><li>g2d.fill(kepala); </li></ul><ul><li>Ellipse2D mata = new Ellipse2D.Double( </li></ul><ul><li>X_TT_MATA - JEJARI_MATA, Y_TT_MATA - JEJARI_MATA, 2*JEJARI_MATA, 2*JEJARI_MATA); </li></ul><ul><li>g2d.setPaint(Color.white); </li></ul><ul><li>g2d.fill(mata); } </li></ul><ul><li>} </li></ul>Melukis kepala Melukis mata
  49. 49. Output: Mr Packman
  50. 50. Poligon Dan Poligaris <ul><li>Poligon : bentuk yang terdiri daripada segmen garis yang membentuk ruang tertutup </li></ul><ul><li>Poligaris : bentuk yang terdiri daripada segmen garis tetapi bucu terakhir tidak bersambung dengan bucu pertama </li></ul><ul><li>Objek GeneralPath digunakan untuk mewakilkan suatu poligon atau poligaris. </li></ul><ul><li>Untuk mencipta objek GeneralPath </li></ul><ul><ul><li>new GeneralPath() </li></ul></ul>
  51. 51. Poligon Dan Poligaris <ul><li>Mesej yang difahami oleh objek GeneralPath: </li></ul><ul><ul><li>moveTo(x, y) :tambah bucu (x, y) </li></ul></ul><ul><ul><li>lineTo(x, y): tambah bucu (x, y) yang disambungkan kepada bucu semasa </li></ul></ul><ul><ul><li>closePath(): menutup ruang yang terbentuk </li></ul></ul><ul><li>Mesej closePath() hanya perlu dihantar jika objek GeneralPath mewakilkan bentuk poligon. </li></ul>
  52. 52. Contoh: <ul><li>import java.awt.*; </li></ul><ul><li>import javax.swing.*; </li></ul><ul><li>import java.awt.geom.*; </li></ul><ul><li>public class DemoPoligon extends JApplet { </li></ul><ul><li>public void paint(Graphics g) { </li></ul><ul><li>int[] x = {90, 85, 140, 185, 200, 200, 185, 140, 85}; </li></ul><ul><li>int[] y = {90, 85, 30, 75, 60, 120, 105, 150, 95}; </li></ul><ul><li>Graphics2D g2d = (Graphics2D) g; </li></ul><ul><li>GeneralPath poli = new GeneralPath(); </li></ul><ul><li>poli.moveTo(x[0], y[0]); </li></ul><ul><li>for (int i=1; i < x.length; i++) </li></ul><ul><li>poli.lineTo(x[i], y[i]); </li></ul><ul><li>poli.closePath(); </li></ul><ul><li>g2d.draw(poli); </li></ul><ul><li>}} </li></ul>Tatasusunan x[] dan y[] menyimpan nilai-nilai x dan y bagi poligon Pergi ke kedudukan (90,90) Melukis poligon dengan menggunakan koordinat x[] dan y[] Kembali semula ke kedudukan mula (90,90)
  53. 53. Output: Koordinat mula (90,90)
  54. 54. Contoh Butang Elips di klik
  55. 55. Contoh
  56. 56. <ul><li>public class Lukis extends JApplet implements ActionListener{ </li></ul><ul><li>private int x,y; </li></ul><ul><li>private String s=&quot;&quot;; </li></ul><ul><li>private int tinggi,lebar,jejari; </li></ul><ul><li>PaparanGrafik grafik = new PaparanGrafik(); </li></ul><ul><li>public void init(){ </li></ul><ul><li>Container pane = getContentPane(); </li></ul><ul><li>pane.setLayout(new BorderLayout()); </li></ul><ul><li>JPanel panel = new JPanel(); </li></ul><ul><li>JButton garis = new JButton(&quot;Garis&quot;); </li></ul><ul><li>garis.addActionListener(this); </li></ul><ul><li>panel.add(garis); </li></ul><ul><li>JButton bulat = new JButton(&quot;Ellips&quot;); </li></ul><ul><li>bulat.addActionListener(this); </li></ul><ul><li>panel.add(bulat); </li></ul><ul><li>pane.add(panel,&quot;North&quot;); </li></ul><ul><li>pane.add(grafik, &quot;Center&quot;); </li></ul><ul><li>} </li></ul>Mendaftarkan komponen Menyediakan antaramuka Kelas PaparanGrafik
  57. 57. <ul><li>public void actionPerformed(ActionEvent e){ </li></ul><ul><li>s = e.getActionCommand(); </li></ul><ul><li>if(s.equals(&quot;Garis&quot;)) { </li></ul><ul><li>String inputDatax = JOptionPane.showInputDialog (null,&quot;koordinat x&quot;); </li></ul><ul><li>x = Integer.parseInt(inputDatax); </li></ul><ul><li>String inputDatay = JOptionPane.showInputDialog (null,&quot;koordinat y&quot;); </li></ul><ul><li>y = Integer.parseInt(inputDatay); </li></ul><ul><li>String inputx1 = JOptionPane.showInputDialog (null,&quot;tinggi &quot;); </li></ul><ul><li>x1 = Integer.parseInt(inputx1); </li></ul><ul><li>String inputy1 = JOptionPane.showInputDialog (null,&quot;lebar &quot;); </li></ul><ul><li>y1 = Integer.parseInt(inputy1); </li></ul><ul><li>grafik.setBentuk(x, y, x1, y1, s); </li></ul><ul><li>} </li></ul>Jika butang garis diklik, dapatkan titik mula dan akhir bagi garis
  58. 58. <ul><li>else </li></ul><ul><li>{ </li></ul><ul><li>String inputDatax = JOptionPane.showInputDialog (null,&quot;koordinat x&quot;); </li></ul><ul><li>x = Integer.parseInt(inputDatax); </li></ul><ul><li>String inputDatay = JOptionPane.showInputDialog (null,&quot;koordinat y&quot;); </li></ul><ul><li>y = Integer.parseInt(inputDatay); </li></ul><ul><li>String inputTinggi = JOptionPane.showInputDialog </li></ul><ul><li>(null,&quot;tinggi &quot;); </li></ul><ul><li>tinggi = Integer.parseInt(inputTinggi); </li></ul><ul><li>String inputLebar = JOptionPane.showInputDialog </li></ul><ul><li>(null,&quot;lebar &quot;); </li></ul><ul><li>lebar = Integer.parseInt(inputLebar); </li></ul><ul><li>grafik.setBentuk(x, y, tinggi, lebar, s); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>Jika butang elips diklik, dapatkan (x,y,tinggi dan lebar) bagi ellips
  59. 59. <ul><li>class PaparanGrafik extends JPanel { </li></ul><ul><li>private int tinggi,lebar,jejari; </li></ul><ul><li>private int x,y; </li></ul><ul><li>private String s = &quot;&quot;; </li></ul><ul><li>public void setBentuk(int xx, int yy, int l, int t, String bentuk) { </li></ul><ul><li>x = xx; </li></ul><ul><li>y = yy; </li></ul><ul><li>lebar = l; </li></ul><ul><li>tinggi = t; </li></ul><ul><li>s = bentuk; </li></ul><ul><li>repaint(); </li></ul><ul><li>} </li></ul><ul><li>public void paint(Graphics g){ </li></ul><ul><li>super.paint(g); </li></ul><ul><li>Graphics2D g2d = (Graphics2D) g; </li></ul><ul><li>Ellipse2D.Double elips = new Ellipse2D.Double(); </li></ul><ul><li>if (s.equals(&quot;Garis&quot;)) { </li></ul><ul><li>g2d.draw(new Line2D.Double(x, y, x+lebar, y+tinggi)); </li></ul><ul><li>} </li></ul><ul><li>else{ </li></ul><ul><li>g2d.draw(new Ellipse2D.Double(x, y, lebar, tinggi)); </li></ul><ul><li>} </li></ul><ul><li>}} </li></ul>kembali Kelas ini akan melukis bentuk yang ditentukan oleh butang yang diklik
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×