Witam
Mój problem polega na tym ze zamiast pobierać obraz z płótna pobiera z background frema
i nie mam zielonego pojęcia dlaczego tak się dzieje :)
Za wszelka pomoc z góry dziękuje
oto program
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.*;
import java.awt.image.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;
public class Obraz extends Frame implements ItemListener
{
Button b1;
Canvas Plutno ;
int x,y;
int w=400,h=400;
boolean stan=false;
Color kolor=Color.red;
List listaKolorow;
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
}
Obraz()
{
super("Obraz");
setSize(500,500);
setResizable(false);
GrafInte();
}
public void GrafInte()
{
setLayout(new BorderLayout());
Panel kontrola1 = new Panel();
Panel kontrola2 = new Panel();
b1 = new Button("Save");
Plutno =new Canvas();
listaKolorow = new List(4, false);
listaKolorow.add("Czarny");
listaKolorow.add("Czerwony");
listaKolorow.add("Niebieski");
listaKolorow.add("Zolty");
listaKolorow.add("Zielony");
listaKolorow.add("Brazowy");
Plutno.setSize(h,w);
Plutno.setBackground(Color.white);
kontrola1.add(b1);
kontrola1.add(listaKolorow);
kontrola2.add(Plutno);
add(kontrola1,BorderLayout.SOUTH);
add(kontrola2,BorderLayout.CENTER);
b1.addActionListener(new B1());
listaKolorow.addItemListener(this);
Plutno.addMouseMotionListener(new MouseMotionAdapter()
{
public void mouseDragged(MouseEvent e)
{
x = e.getX();
y = e.getY();
//setForeground(Color.black);
Plutno.getGraphics().fillOval(x,y,5,5);
//repaint();
}
});
}
private void save(BufferedImage image) {
String ext = "jpg";
File file = new File("Image." + ext);
try {
ImageIO.write(image, ext, file);
} catch(IOException e) {
System.out.println("write error: " + e.getMessage());
}
}
private BufferedImage makeImage(Canvas Plutno) {
int type = BufferedImage.TYPE_INT_RGB;
BufferedImage image = new BufferedImage(w,h,type);
Graphics g2 = image.createGraphics();
Plutno.paint(g2);
g2.dispose();
return image;
}
class B1 implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
save(makeImage(Plutno));
}
}
public void itemStateChanged(ItemEvent event)
{
Object source=event.getSource();
if (listaKolorow.getSelectedIndex() ==0)
{
setForeground(Color.black);
repaint();
}if (listaKolorow.getSelectedIndex() ==1)
{
setForeground(Color.red);
repaint();
}if (listaKolorow.getSelectedIndex() ==2)
{
setForeground(Color.blue);
repaint();
}if (listaKolorow.getSelectedIndex() ==3)
{
setForeground(Color.yellow);
repaint();
}if (listaKolorow.getSelectedIndex() ==4)
{
setForeground(Color.green);
repaint();
}if (listaKolorow.getSelectedIndex() ==5)
{
setForeground(Color.pink);
repaint();
}
}
public static void main(String args[])
{
Frame Okno=new Obraz();
Okno.setBackground(Color.black);
Okno.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.out.println("Dziekujemy za prace z programem...");
System.exit(0);
}
});
Okno.setVisible(true);
}
}
</asm>