꽤 괜찮 았는데 - 다른 사람이 비슷한 문제가 있다면 여기 내 코드가 있습니다! 첫 번째 이미지는 나중에 저장하고 표시 할 수 있습니다. (버프) 투명도가 사라지면 다시 표시 할 때 새 BufferedImage (여기 캔버스)를 생성하십시오. Gilbert Le Blanc에게 감사드립니다.
@Override
protected void paintComponent(Graphics g1) {
//Create image:
BufferedImage buff = new BufferedImage(mywidth, myheight, BufferedImage.TYPE_INT_ARGB);
//write to image:
Graphics2D g2 = (Graphics2D) buff.getGraphics();
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,(float) 0.01f));
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.draw(xxxRectanglewhatever);
//then - later draw image again
BufferedImage canvas = new BufferedImage(mywidth, myheight, BufferedImage.TYPE_INT_ARGB);
canvas.getGraphics().drawImage(buff, 0, 0, null);
((Graphics2D) g1).setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
g1.drawImage(canvas, 0, 0, null);
canvas.flush();
}
좋은 방법은 하나의 JPanel과 여러 개의 BufferedImages를 레이어로 사용하는 것입니다. 투명 영역을 페인트하지 않도록 각 BufferedImage를 순서대로 페인트합니다. 애니메이션의 각 프레임에 대해 전체 그리기 영역을 지우고 다시 칠해야합니다. 또한 드로잉 패널 paintComponent 메소드는 페인트 만하면됩니다. 계산이 없습니다. Graphics2D 이외의 방법은 없습니다. 마지막 대안은 기하학적 인물을 모델링하고 모델에서 인물을 그리는 것입니다. –
그림을 설정하는 방법을 보려면 내 [움직이는 눈] (http://stackoverflow.com/questions/34981403/bufferedimage-not-being-cleared-before-each-rendering/35002727#35002727) 답변을 확인하십시오. 스윙의 패널. –
그건 내 문제를 해결할 수있을 것 같은데! 레이어로서의 BufferedImages - 나는 그것을 시도 할 것이다! 고맙습니다! –