Я пытаюсь создать простую программу с кистью, подобной инструменту, при открытии она создала JFrame, и в ней я помещаю холст, на который пользователь может рисовать. Теперь я пытаюсь сохранить чертеж, используя метод saveCanvas, который вызывается при выходе, но что бы я ни делал, я получаю черное изображение. Вот мой код:Java BufferedImage возвращает черное изображение из Canvas
public class Test{
JFrame f;
Canvas c;
int x=-1, y=-1;
public Test() {
f = new JFrame();
f.setSize(1200, 800);
c = new Canvas(){
@Override
public void paint(Graphics g){
super.paint(g);
}
};
f.add(c);
c.addMouseMotionListener(new MouseMotionListener(){
@Override
public void mouseMoved(MouseEvent e) {
// empty
}
@Override
public void mouseDragged(MouseEvent e){
if(x==-1){
x = e.getX();
y = e.getY();
}
c.getGraphics().fillOval(x, y, 5, 5);
x = e.getX();
y = e.getY();
}
});
f.addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent evt) {
onExit();
}
public void onExit()
{
saveCanvas(c);
System.exit(0);
}
});
f.setVisible(true);
}
public static void main(String[] args) {
Test paintBrush = new Test();
}
public static void saveCanvas(Canvas canvas){
BufferedImage image=new BufferedImage(canvas.getWidth(), canvas.getHeight(),BufferedImage.TYPE_INT_ARGB);
Graphics2D g2=(Graphics2D)image.getGraphics();
boolean x = false;
while(!x){
x = g2.drawImage(image, 0, 0, null);
}
try
{
ImageIO.write(image, "png", new File("C:\\test\\canvas.png"));
}
catch (Exception e) {
}
}
}
Любые мысли о том, что может быть причиной этого?
для начала, попробуйте обработать ваше исключение – user902383
Я не получаю никаких исключений, файл сохранен, это всего лишь черный –
Хм, я получил цвет фона с холста в методе savecanvas, его rgb - 238, что означает черный правый? – anshulkatta