(1) Pertama -tama mendefinisikan kelas yang akan diimplementasikan, pertama -tama saya mendefinisikan kelas abstrak
Salinan kode adalah sebagai berikut:
// Grafik
Bentuk kelas abstrak {
int x, y;
int x1, y1;
Warna warna;
Grafik g;
tipe byte;
Draw abstrak publik (grafik g);
}
//Garis lurus
Lineshape kelas memperluas bentuk {
lineshape publik (int x, int y, int x1, int y1, warna warna) {
this.x = x;
this.y = y;
this.x1 = x1;
this.y1 = y1;
this.color = warna;
this.type = 0;
}
@Mengesampingkan
public void draw (grafik g) {
g.setColor (warna);
G.Drawline (x, y, x1, y1);
}
}
// Kelas Lingkaran
kelas ovalshape memperluas bentuk {
Public OvalShape (int x, int y, int x1, int y1, warna warna) {
this.x = x;
this.y = y;
this.x1 = x1;
this.y1 = y1;
this.color = warna;
this.type = 1;
}
@Mengesampingkan
public void draw (grafik g) {
g.setColor (warna);
g.drawoval ((x+x1)/2, (y+y1)/2, (x1-x)/2, (y1-y)/2);
}
}
// gambar
gambar kelas memperluas bentuk {
int a;
int b;
int cl [] [];
gambar publik (int a, int b, int cl [] []) {
this.type = 2;
this.a = a;
this.b = b;
this.cl = cl;
}
public void draw (grafik g) {
untuk (int k = 0; k <a; k ++) {
untuk (int j = 0; j <b; j ++) {
Warna c = warna baru (cl [k] [j]);
g.setColor (c);
G.Drawline (K+100, J+100, K+100, J+100);
}
}
}
}
(2) Total Metode Kelas
Salinan kode adalah sebagai berikut:
BMPSAVESTART Kelas Publik {
Grafik g;
public static void main (string [] args) {
BMPSAVESTART baru () .ui ();
}
public void ui () {
JFrame jf = jframe baru ();
JF.Setsize (600.600);
jf.settitle ("penyimpanan gambar");
JF.SetBackground (Color.White);
Jmenubar bar = jmenubar baru ();
Jmenu menu1 = jmenu baru ("opsi");
JMenuitem m1 = jMenuitem baru ("Draw a Circle");
JMenuitem m2 = jMenuitem baru ("garis gambar");
JMenuitem m3 = jMenuitem baru ("penyimpanan");
JMenuitem m4 = jMenuitem baru ("terbuka");
JMenuitem m5 = jMenuitem baru ("gambar");
menu1.add (m1);
menu1.add (m2);
menu1.add (m3);
menu1.add (m4);
menu1.add (m5);
bar.add (menu1);
jf.setjmenubar (bar);
JF.SetDefaultCloseOperation (3);
jf.setVisible (true);
PaintDemo P = PaintDemo baru (G, JF);
M1.SetActionCommand ("Draw a Circle");
m2.setactionCommand ("Draw Line");
m3.setactionCommand ("penyimpanan");
m4.setactionCommand ("terbuka");
m5.setactionCommand ("gambar");
M1.AddactionListener (P);
m2.addactionListener (p);
m3.addactionListener (p);
m4.addactionListener (p);
m5.addactionListener (p);
}
}
(3) Kelas pemantauan
Salinan kode adalah sebagai berikut:
Kelas PaintDemo mengimplementasikan MouseListener, ActionListener {
Imageicon img = ImageIcon baru ("gambar/100.gif");
BuferedImage bufimage = baru bufferedImage (img.geticonWidth (), img.geticonHeight (), bufferedimage.type_int_rgb);
int x, y;
int x1, y1;
JFrame JF;
Grafik g;
String str;
Warna C;
int cr;
int cl [] [] = int baru [1000] [1000];
ArrayList <tape> bentuk = ArrayList baru <daping> ();
Acak acak = acak baru ();
int r;
int g;
int b;
Public PaintDemo (Graphics G, JFrame JF) {
this.jf = jf;
this.g = jf.getGraphics ();
}
@Mengesampingkan
public void mouseclicked (mouseEvent e) {
// TODO Stub Metode yang dihasilkan otomatis
}
@Mengesampingkan
public void mousepressed (mouseEvent e) {
x = e.getx ();
y = e.gety ();
}
@Mengesampingkan
mousereleased public void (MouseEvent E) {
x1 = e.getx ();
y1 = e.gety ();
setColor ();
if (str.equals ("Draw a Circle") {
// CAINGOVAL ();
Bentuk bentuk = ovalshape baru (x, y, x1, y1, c);
bentuk.draw (g);
Shapes.add (bentuk);
}
if (str.equals ("draw line") {
// cat ();
Bentuk bentuk = lineshape baru (x, y, x1, y1, c);
bentuk.draw (g);
Shapes.add (bentuk);
/*File f = file baru ("d: //test.txt");
if (f == null) {
mencoba {
f.createNewFile ();
} catch (Exception e1) {
// TODO Blok tangkapan yang dihasilkan otomatis
e1.printstacktrace ();
}
}*/
}
}
public void savefile (jalur string, arraylist <daping> bentuk) {
mencoba{
// File Output Stream
FileOutputStream fos = FileOutputStream baru (path);
// Bungkus aliran output file ke dalam stream tipe dasar yang dapat ditulis
DataOutputStream dos = DataOutputStream baru (FOS);
dos.writeint (shapes.size ()); // Jumlah angka yang ditulis untuk antrian
// Baca antrian
untuk (int i = 0; i <shapes.size (); i ++) {
// ambil bentuknya
Bentuk bentuk = bentuk.get (i);
tipe byte = bentuk.type;
if (type == 0) {// menilai tipe sesuai dengan jenis, jika itu adalah garis lurus
System.out.println ("Mulai Menyimpan Garis");
dos.writebyte (tipe);
Lineshape line = (lineshape) bentuk; // Konversi ke kelas linier
// Tulis data pada garis lurus;
int x = line.x;
int y = line.y;
int x1 = line.x1;
int y1 = line.y1;
Warna warna = line.color;
cr = color.getrgb ();
dos.writeint (x);
dos.writeint (y);
dos.writeint (x1);
dos.writeint (y1);
dos.writeint (CR);
} lain jika (type == 1) {
dos.writebyte (tipe);
System.out.println ("Mulai Menyimpan Lingkaran");
Ovalshape oval = (ovalshape) bentuk; // konversi ke kelas lingkaran
// Tulis data pada garis lurus;
int x = oval.x;
int y = oval.y;
int x1 = oval.x1;
int y1 = oval.y1;
Warna warna = oval.color;
cr = color.getrgb ();
dos.writeint (x);
dos.writeint (y);
dos.writeint (x1);
dos.writeint (y1);
dos.writeint (CR);
} lain jika (type == 2) {
dos.writebyte (tipe);
gambar pl = (gambar) bentuk;
System.out.println ("Mulai Menyimpan Gambar");
Int width = pl.A;
tinggi int = pl.b;
dos.writeint (lebar);
dos.writeint (tinggi);
untuk (int k = 0; k <lebar; k ++) {
untuk (int j = 0; j <height; j ++) {
int t = pl.cl [k] [j];
dos.writeint (t);
}
}
}
}
dos.flush ();
fos.close ();
} catch (Exception e) {
e.printstacktrace ();
}
}
Public ArrayList <dape> readFile (string path) {
mencoba{
// Buat aliran input objek file
FileInputStream fis = new fileInputStream (path);
// Bungkus aliran input file ke dalam aliran tipe dasar yang dapat dibaca
DataInputStream dis = new DatalputStream (FIS);
// Pertama baca panjang file, yaitu jumlah total bentuk
int len = dis.readint ();
untuk (int i = 0; i <len; i ++) {
tipe byte = dis.readbyte ();
if (type == 0) {
int a = dis.readint ();
int b = dis.readint ();
int c = dis.readint ();
int d = dis.readint ();
Warna f = warna baru (dis.readint ());
Garis lineshape = lineshape baru (a, b, c, d, f);
// Baca pengaturan garis lurus
// Simpan garis lurus ke antrian
Shapes.add (baris);
} lain jika (type == 1) {
int a = dis.readint ();
int b = dis.readint ();
int c = dis.readint ();
int d = dis.readint ();
Warna f = warna baru (dis.readint ());
System.out.println ("Mulai Membaca Lingkaran");
Ovalshape oval = ovalshape baru (a, b, c, d, f);
Shapes.add (oval);
} lain jika (type == 2) {
int a = dis.readint ();
int b = dis.readint ();
untuk (int k = 0; k <a; k ++) {
untuk (int j = 0; j <b; j ++) {
Cl [k] [j] = dis.readint ();
}
}
gambar pic = gambar baru (a, b, cl);
shapes.add (pic);
}
}} catch (Exception e) {
e.printstacktrace ();
}
Bentuk kembali;
}
@Mengesampingkan
public void mouseEntered (MouseEvent E) {
// TODO Stub Metode yang dihasilkan otomatis
}
@Mengesampingkan
public void mouseExited (MouseEvent E) {
// TODO Stub Metode yang dihasilkan otomatis
}
public void setColor () {
R = random.nextint (255);
G = random.nextint (255);
B = random.nextint (255);
C = warna baru (r, g, b);
}
/* public void paintline () {
setColor ();
G.Drawline (x, y, x1, y1);
}
public void paintoval () {
setColor ();
g.drawoval ((x+x1)/2, (y+y1)/2, (x1-x)/2, (y1-y)/2);
}
*/
@Mengesampingkan
public void actionPerformed (actionEvent e) {
str = e.getactionCommand ();
jf.addmouseListener (ini);
if (str.equals ("penyimpanan")) {
saveFile ("d: //test.txt", bentuk);
}
if (str.equals ("open")) {
readFile ("d: //test.txt");
untuk (int i = 0; i <shapes.size (); i ++) {
Bentuk bentuk = bentuk.get (i);
if (shape.type == 0) {
System.out.println ("Tentukan bahwa itu adalah jenis lingkaran");
Garis lineshape = (lineshape) bentuk;
line.draw (g);
} else if (shape.type == 1) {
System.out.println ("Tentukan bahwa itu adalah jenis lingkaran");
Ovalshape oval = (ovalshape) bentuk;
oval.draw (g);
} else if (shape.type == 2) {
System.out.println ("Konfirmasikan bahwa itu adalah tipe gambar");
gambar pl = (gambar) bentuk;
pl.draw (g);
}
}
}
if (str.equals ("gambar")) {
Thread th = utas baru (runnable baru () {
public void run () {
while (true) {
mencoba{
Thread.sleep (30);
Grafik g1 = bufimage.getGraphics ();
g1.drawimage (img.getImage (), 0,0, null);
jf.getGraphics (). DrawImage (bufimage, 100.100, null);
Int width = bufimage.getWidth ();
int tinggi = bufimage.getHeight ();
untuk (int k = 0; k <lebar; k ++) {
untuk (int j = 0; j <height; j ++) {
int p = bufimage.getrgb (k, j);
Cl [k] [j] = p;
}
}
gambar pe = gambar baru (lebar, tinggi, cl);
Shapes.add (PE);
} catch (Exception e) {
e.printstacktrace ();
}
}
}});
th.start ();
}
}
}