Kelas Graphics menyediakan metode menggambar dasar, dan kelas Graphics2D menyediakan kemampuan menggambar yang lebih canggih. Bagian ini menjelaskan kelas Graphics, dan bagian selanjutnya menjelaskan Graphics2D.
Kelas Grafik menyediakan metode menggambar geometris dasar, terutama meliputi: menggambar segmen garis, menggambar persegi panjang, menggambar lingkaran, menggambar grafik berwarna, menggambar elips, menggambar busur, menggambar poligon, dll.
1. Menggambar garis <br />Untuk menggambar segmen garis di jendela, Anda dapat menggunakan metode drawLine() dari kelas Graphics:
garis tarik(int x1,int y1,int x2,int y2)
Misalnya kode berikut menggambar ruas garis antara titik (3,3) dan titik (50,50), dan menggambar sebuah titik di titik (100,100).
g.drawLine(3,3,50,50);//Gambarlah ruas garis g.drawLine(100,100,100,100);//Gambarlah sebuah titik.
2. Menggambar persegi panjang <br />Ada dua jenis persegi panjang: beraturan dan bulat.
(1) Ada dua metode menggambar persegi panjang biasa:
drawRect(int x, int y, int width, int height): Gambarlah sebuah persegi panjang yang dikelilingi oleh wireframe. Parameter x dan y menentukan posisi sudut kiri atas, dan parameter lebar dan tinggi menentukan lebar dan tinggi persegi panjang.
fillRect(int x, int y, int width, int height): mengisi persegi panjang dengan warna yang telah ditentukan untuk mendapatkan balok persegi panjang berwarna.
Kode berikut adalah contoh menggambar persegi panjang:
g.drawRect(80,100,40,25);//Gambar bingkai kawat g.setColor(Color.kuning);g.fillRect(20,70,20,30);//Gambar blok pewarna
(2) Ada dua cara menggambar persegi panjang bulat:
drawRoundRect(int x, int y, int lebar, int tinggi, int arcWidth, int arcHeight): Ini adalah persegi panjang bulat yang dikelilingi oleh garis. Parameter x dan y menentukan posisi sudut kiri atas persegi panjang; parameter lebar dan tinggi adalah lebar dan tinggi persegi panjang; lebar busur dan tinggi busur masing-masing adalah diameter melintang dan diameter memanjang busur fillet.
fillRoundRect(int x, int y, int width, int height, int arcWidth, int archeight): adalah persegi panjang bulat yang diisi dengan warna yang telah ditentukan. Arti dari setiap parameter sama dengan cara sebelumnya.
Kode berikut adalah contoh menggambar persegi panjang:
g.drawRoundRect(10,10,150,70,40,25);//Menggambar persegi panjang bulat g.setColor(Color.blue); g.fillRoundRect(80,100,100,100,60,40);//Melukis balok persegi panjang g.drawRoundRect(10,150,40,40,40,40);//Menggambar lingkaran g.setColor(Color.red); g.fillRoundRect(80,100,100,100,100,100);//Gambarlah sebuah lingkaran
Anda dapat menggambar lingkaran dengan menggambar persegi panjang bulat. Jika lebar dan tinggi persegi panjang sama, diameter melintang busur bulat dan diameter memanjang busur bulat juga sama, dan sama dengan lebar dan tinggi busur bulat. persegi panjang, sebuah lingkaran digambar. Lihat komentar pada contoh di atas. Yang pertama adalah menggambar lingkaran, dan yang terakhir adalah mengecat blok lingkaran.
3. Menggambar persegi panjang tiga dimensi <br />Ada dua cara menggambar persegi panjang tiga dimensi:
draw3DRect(int x,int y,int lebar,int tinggi, boolean ditinggikan): Menggambar persegi panjang yang disorot. Diantaranya, x dan y menentukan posisi sudut kiri atas persegi panjang, parameter lebar dan tinggi adalah lebar dan tinggi persegi panjang, dan parameter yang dimunculkan adalah disorot atau tidak.
fill3DRect(int x,int y,int lebar,int tinggi,boolean dibesarkan): Isi persegi panjang yang disorot dengan warna yang telah ditentukan.
Kode berikut adalah contoh menggambar persegi panjang yang menonjol:
g.draw3DRect(80,100,40,25,true);//Gambarlah gambar rangka g.setColor(Color.kuning); g.fill3DRect(20,70,20,30,true);//Gambarlah blok pewarna
4. Menggambar elips <br />Elips ditentukan oleh sumbu horizontal dan vertikal elips. Ada dua cara menggambar oval:
drawOval(int x, int y, int lebar, int tinggi): menggambar elips yang dikelilingi oleh garis. Parameter x dan y menentukan posisi sudut kiri atas elips, dan parameter lebar dan tinggi menentukan sumbu horizontal dan vertikal.
fillOval(int x, int y, int width, int height): Ini adalah oval yang diisi dengan warna yang telah ditentukan dan merupakan blok pewarnaan. Anda juga dapat menggunakan metode menggambar elips untuk menggambar lingkaran. Jika sumbu horizontal dan sumbu vertikal sama, maka elips yang digambar adalah lingkaran.
Kode berikut adalah contoh menggambar elips:
g.drawOval(10,10,60,120);//Menggambar elips g.setColor(Color.cyan);g.fillOval(100,30,60,60);//Melukis lingkaran g.setColor(Color.magenta ) ;g.fillOval(15,140,100,50);//Cat elips
5. Gambarlah sebuah busur
Ada dua cara menggambar busur:
drawArc(int x, int y, int lebar, int tinggi, int startAngle, int arcAngle): Menggambar garis busur sebagai bagian dari elips. Titik tengah elips adalah titik tengah persegi panjang di sekelilingnya, yang parameternya adalah koordinat (x, y) sudut kiri atas persegi panjang di sekelilingnya, lebar adalah lebar, dan tinggi adalah tinggi. Satuan parameter startAngle adalah "derajat", dan sudut awal 0 derajat mengacu pada posisi jam 3. Parameter startAngle dan arcAngle menunjukkan bahwa mulai dari sudut startAngle, busur derajat arcAngle ditarik ke arah berlawanan arah jarum jam. . Berdasarkan konvensi, derajat positif berlawanan arah jarum jam. Derajat negatif searah jarum jam, misalnya -90 derajat adalah jam 6.
fillArc(int x, int y, int lebar, int tinggi, int startAngle, int arcAngle): Gunakan warna yang diatur oleh metode setColor() untuk menggambar bagian elips berwarna.
Kode berikut adalah contoh menggambar busur:
g.drawArc(10,40,90,50,0,180);//Menggambar garis busur g.drawArc(100,40,90,50,180,180);//Menggambar garis busur g.setColor(Color.kuning); g.fillArc(10,100,40,40,0,-270);//Isi tiga perempat elips yang hilang di sudut kanan atas g.setColor(Color.green); ,- 270);//Isi tiga perempat sudut kiri bawah elips yang hilang
6. Menggambar poligon <br />Poligon adalah bangun datar tertutup yang dibentuk dengan menghubungkan beberapa ruas garis dari ujung ke ujung. Koordinat x dan koordinat y dari titik ujung ruas garis poligon masing-masing disimpan dalam dua larik. Menggambar poligon berarti menghubungkannya dengan ruas garis lurus sesuai urutan titik koordinat yang diberikan. Berikut ini adalah dua metode yang umum digunakan untuk menggambar poligon:
drawPolygon(int xpoints[],int yPoints[],int nPoints): Menggambar poligon
fillPolygon(int xPoints[],int yPoints[],int nPoints): Warnai poligon dengan warna yang ditentukan oleh metode setColor(). Array xPoints[] menyimpan x titik koordinat, yPoints[] menyimpan y titik koordinat, dan nPoints adalah jumlah titik koordinat.
Perhatikan bahwa cara di atas tidak menutup poligon secara otomatis. Untuk menggambar poligon tertutup, titik terakhir dari titik koordinat yang diberikan harus sama dengan titik pertama.
int px1[]={50,90,10,50};//Sebuah poligon hanya dapat digambar jika titik pertama dan terakhirnya sama int py1[]={10,50,50,10}; ]={140,180,170,180,140,100,110,140}; py2[]={5,25,35,45,65,35,25,5}; g.setColor(Warna.biru); g.fillPolygon(px1,py1,4); ; g.drawPoligon(px2,py2,9);
Anda juga dapat menggunakan objek poligon untuk menggambar poligon. Buat objek poligon menggunakan kelas poligon Polygon, lalu gunakan objek ini untuk menggambar poligon. Metode utama kelas Polygon:
Misalnya, kode berikut menggambar sebuah segitiga dan mengisinya dengan segitiga kuning. Perhatikan bahwa menggunakan objek poligon untuk menggambar poligon tertutup tidak mengharuskan titik pertama dan terakhir bertepatan.
int x[]={140,180,170,180,140,100,110,100}; int y[]={5,25,35,45,65,45,35,25}; poligon poligon1=poligon baru(); .addPoint(90,50); polygon1.addPoint(10,50); g.drawPolygon(polygon1); g.setColor(Warna.kuning);
7. Hapus blok persegi panjang <br />Bila Anda ingin memiliki persegi panjang kosong di tengah grafik berwarna, Anda dapat mengisi blok persegi panjang dengan warna latar belakang, yang setara dengan menggunakan "penghapus" pada blok persegi panjang. Caranya adalah:
clearRect(int x, int y, int width, int height): Menghapus pewarnaan blok persegi panjang yang ditentukan oleh parameter.
Misalnya, kode berikut mengimplementasikan pewarnaan yang menghapus blok persegi panjang dalam lingkaran:
g.setColor(Warna.biru); g.fillOval(50,50,100,100);g.clearRect(70,70,40,55);
8. Batasi area tampilan gambar <br />Gunakan persegi panjang untuk mewakili area tampilan grafik. Grafik harus valid dalam rentang yang ditentukan. Nilai koordinat baru tidak akan dihitung ulang, dan terlampaui bagian tidak akan ditampilkan secara otomatis. Metodenya adalah clipRect(int x, int y, int width, int height), yang membatasi tampilan grafik pada area tertentu, dan tidak menampilkan bagian berlebih. Ketika beberapa area terlarang dicakup, area perpotongan dari area terlarang tersebut diperoleh. Misalnya kode:
g.clipRect(0,0,100,50);g.clipRect(50,25,100,50);
Setara dengan
g.clipRect(50,25,50,25);
9. Menyalin grafik <br />Gunakan metode copyArea() dari kelas Grafik untuk menyalin grafik. Format penggunaannya adalah:
copyArea(int x, int y, int width, int height, int dx, int dy), dx dan dy masing-masing mewakili jumlah piksel yang diimbangi dengan menempelkan grafik ke posisi semula Nilai negatif diimbangi ke kiri atau ke atas. Titik acuan perpindahannya adalah koordinat sudut kiri atas persegi panjang yang akan disalin.
Misalnya, kode berikut mengilustrasikan penyalinan grafik, dengan mengkustomisasi bagian dari satu persegi panjang dan keseluruhan persegi panjang lainnya.
g.drawRect(10,10,60,90); g.fillRect(90,10,60,90); g.copyArea(40,50,60,70,-20,80); 50,60,60,10,80);
[Contoh] Sebuah aplikasi kecil menulis ulang metode update() untuk hanya menghapus blok lingkaran, bukan teks, dan jendela menampilkan kotak merah yang terus bergerak.
import java.applet.*;import java.awt.*;public class Contoh7_3 extends Applet{ int i=1; public void init(){ setBackground(Color.kuning); +8; if(i>160)i=1; g.setColor(Warna.merah);g.fillRect(i,10,20,20); g.drawString("Saya sedang mempelajari metode update()",100,100); coba{ Thread.sleep(100); catch(InterruptedException e){} repaint(); .clearRect (i,10,200,100);//Tidak jelas "Saya sedang mempelajari metode update()" paint(g }}
Program menggambar umum harus mewarisi JFrame dan mendefinisikan subkelas jendela JFrame, dan juga mewarisi JPanel dan mendefinisikan subkelas JPanel. Definisikan ulang metode paintComponent() di subkelas JPanel, dan panggil metode menggambar dalam metode ini untuk menggambar berbagai grafik.
[Contoh] Aplikasi menggunakan mode menggambar XOR.
import javax.swing.*;import java.awt.*;public class Contoh7_4 extends JFrame{ public static void main(String args[]){ GraphicsDemo myGraphicsFrame = new GraphicsDemo(); setBackground(Warna.putih); } public void paintComponent(Grafik g){ super.paintComponent(g); setBackground(Color.kuning); //Warna latar belakang adalah kuning g.setXORMode(Color.red); //Mengatur mode gambar XOR dan warnanya menjadi merah g.setColor(Color.green); 20, 80 , 40); //Warna sebenarnya adalah warna campuran hijau + kuning = abu-abu g.setColor(Color.kuning); 40); //Bagian kedua berwarna kuning+kuning=baca, bagian pertama berwarna kuning+abu-abu g.setColor(Color.green); g.fillRect(20, 70, 80, 40); hijau+kuning Warna campuran = abu-abu. g.fillRect(60, 70, 80, 40); //Bagian pertama adalah (hijau+kuning)+abu-abu =Warna latar belakang, paruh terakhir hijau+kuning = abu-abu g.setColor(Warna.hijau); g.drawLine(80, 100, 180, 200); //Garis lurus berwarna hijau+kuning = abu-abu g.drawLine( 100, 100, 200, 200); //Sama seperti di atas/*Gambarlah garis lurus yang sebagian tumpang tindih. Bagian tengah dari garis lurus asli berwarna abu-abu+abu-abu=warna latar belakang, dan bagian yang diperluas berwarna hijau+kuning=abu-abu.*/ g.drawLine(140, 140 , 220, 220); g.setColor(Color.kuning); //Analisis perubahan warna garis lurus berikut, yang tumpang tindih dengan gaya sebelumnya g.drawLine(20, 30, 160, 30); g.drawLine(20, 75, 160, 75); }}kelas GraphicsDemod memperluas JFrame{ public GraphicsDemo(){ this.getContentPane().add(new ShapesPanel()); setTile("Demonstrasi metode menggambar dasar"); (300, 300); setTerlihat(benar }}