Ciel mojej prace je naprogramovať grafický editor a nakoniec som to prekreslovanie vytiešil sám. Čítal som si dosť na internete a vyriešíl tak že do toho BufferImage objektu nakreslím obdlžnik s výplňou na celú kreslenú plochu s farbou pozadia a potom do toho nakreslím tie čiary. Týmto sa prekreslí celá plocha bez volania repaint(); a je to fakt rýchle.Vyzerá to takto:
fps.Update(time);
buffImage = new BufferedImage(this.getWidth(), this.getHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d_bi = (Graphics2D)this.buffImage.createGraphics();
g2d_bi.setColor(this.getBackground()); //nastavý farbu ktorou sa ma kresliť na farbu pozadia plátna
g2d_bi.fillRect(0,0, this.getWidth(),this.getHeight()); //vykreslí obdlžnik na celú kresliacu plochu, čim sa zmaže predchadzajúce kreslenie
for(int i = 0;i < arrayLines.size();i++)
{
g2d_bi.setColor(Color.BLUE);
g2d_bi.draw(arrayLines.get(i));
}
if(line_global != null)
{
g2d_bi.setColor(Color.BLUE);
g2d_bi.draw(line_global); // vykreslí čiaru ktorá sa práve ťaha myšou na určitý bod;
}
g2d_bi.drawString("FPS: " + Float.toString(fps.GetCountFPS()), 200, 50);
Graphics2D g2d = (Graphics2D)this.getGraphics();
if(g2d != null && buffImage != null)
{
g2d.drawImage(buffImage, transform1, this);
}
Toolkit.getDefaultToolkit().sync();
g2d.dispose();