Cześć,
napisałem aplikację, która ma za zadanie rysować obrazek myszką na JPanelu (taki mini paint). LPM->rysowanie, PPM->gumka, Scroll->rozmiar ołówka, Scroll_button->czyści ekran. Moje pytanie brzmi: Jak załadować to wszystko do BufferedImage, żeby przy przesuwaniu okna lub minimalizowaniu go nie znikało mi to co narysowałem?
[code]
{
drawing_area = new JPanel();
drawing_area.setVisible(false);
drawing_area.addMouseWheelListener(new MouseWheelListener() {
public void mouseWheelMoved(MouseWheelEvent evt) {
drawing_areaMouseWheelMoved(evt);
}
});
drawing_area.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent evt) {
drawing_areaMouseEntered(evt);
}
public void mouseExited(MouseEvent evt) {
drawing_areaMouseExited(evt);
}
public void mouseReleased(MouseEvent evt) {
drawing_areaMouseReleased(evt);
}
public void mousePressed(MouseEvent evt) {
drawing_areaMousePressed(evt);
}
public void mouseClicked(MouseEvent evt) {
drawing_areaMouseClicked(evt);
}
});
drawing_area.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseMoved(MouseEvent evt) {
drawing_areaMouseMoved(evt);
}
public void mouseDragged(MouseEvent evt) {
drawing_areaMouseDragged(evt);
}
});
}
...
private void drawing_areaMouseDragged(MouseEvent evt)
{
x=evt.getX()+5;
y=evt.getY()+50;
if (a==1)
{
Graphics2D g2 = (Graphics2D)getGraphics();
switch (col)
{
case 1:
g2.setColor(Color.BLACK);
break;
case 2:
g2.setColor(Color.RED);
break;
case 3:
g2.setColor(Color.YELLOW);
break;
case 4:
g2.setColor(Color.BLUE);
break;
case 5:
g2.setColor(Color.GREEN);
break;
default:
break;
}
g2.fillOval(x, y, point_size, point_size);
}
if (a==0)
{
getGraphics().setColor(new java.awt.Color(0,255,255));
getGraphics().clearRect(x,y,point_size*2,point_size*2);
}
}
private void drawing_areaMouseClicked(MouseEvent evt)
{
}
private void drawing_areaMousePressed(MouseEvent evt) {
int button = evt.getButton();
if (button == MouseEvent.BUTTON3) {a=0;}
if (button == MouseEvent.BUTTON1) {a=1;}
if (button == MouseEvent.BUTTON2) {a=2; repaint();}
}
private void drawing_areaMouseReleased(MouseEvent evt) {
}
private void drawing_areaMouseExited(MouseEvent evt)
{
a=2;
}
private void drawing_areaMouseEntered(MouseEvent evt)
{
}
private void drawing_areaMouseMoved(MouseEvent evt)
{
//System.out.println("("+evt.getX()+","+evt.getY()+")");
}
private void drawing_areaMouseWheelMoved(MouseWheelEvent evt)
{
int rotate = evt.getWheelRotation();
if(rotate == -1 && point_size > 2)
point_size--;
if(rotate == 1 && point_size < 9)
point_size++;
}
private void black_bActionPerformed(ActionEvent evt) {
col = 1;
}
private void red_bActionPerformed(ActionEvent evt) {
col = 2;
}
private void yellow_bActionPerformed(ActionEvent evt) {
col = 3;
}
private void blue_bActionPerformed(ActionEvent evt) {
col = 4;
}
private void green_bActionPerformed(ActionEvent evt) {
col = 5;
}
[/code]