Olamagato napisał(a)
Jeżeli chcesz uniknąć problemów z wyświetlaniem różnych obrazków z różnych źródeł, to używaj takich metod jak createCompatibleImage i createCompatibleVolatileImage. Dzięki temu możesz zawsze "przekleić" zawartość innego wczytanego obrazka za pomocą metody drawImage do tak utworzonego obrazka buforowanego. Ten musi zostać zawsze dobrze wyświetlony ponieważ ma plan identyczny z aktualnie używanym trybem graficznym. Poza tym tak zrobione obrazy są renderowane i buforowane z maksymalną możliwą szybkością jaka jest dostępna w Javie (praktycznie identyczną z programami natywnymi systemu).
Dzisiaj sprawdzałem i użycie tych metod nie pomaga.
Obraz wyswietlam w taki sposób:
Na formularzu jest jLabel o nazwie PictureView, a BufferedImage ma nazwę TempView.
ImageIcon ImgView = new ImageIcon(TempView);
PictureView.setIcon(ImgView);
PictureView.repaint();
Próbowałem jeszcze w taki sposób z panelem jPanel:
Graphics G = jPanel1.getGraphics();
Gr.drawImage(TempView, 0, 0, PW, PH, null);
Wtedy jest jeszcze gorzej, bo rysunek jest "nietrwały", zminimalizowanie lub zasłonięcie okna powoduje usunięcie rysunku.
Co więcej, testowałem działanie programu w MacOS i Linux (wirtualne maszyny), w tych systemach nie ma żadnych problemów.
Natomiast w Windows, jak wyłączę przyspieszenie karty graficznej (PPM na pulpicie, właściwości, ustawienia, zaawansowane, karta Rozwiązywanie problemów, suwak w lewo do końca), to problem znika. W programach pisanych w innych językach nie mam takich problemów.