그림을로드하고 GUI 형식으로 표시하고 사용자가 일부 변형을 적용하고 변형 된 그림을 표시 할 수있는 간단한 Java 응용 프로그램을 작성해야합니다. 다시 그리기 방법은 너무 자주 호출하기 때문에 , 내 솔루션은 잘 작동하지만, UI가 조금 점멸 (예를 들어 JSlider에와 이미지 스케일링 사용자는 경우)Java 스윙 - 캔버스 그래픽 깜박임
내 코드는 다음과 같습니다
public class ImageCanvas extends Canvas
{
private BufferedImage image;
// ...
@Override
public void paint(Graphics g)
{
Graphics2D g2d = (Graphics2D) g;
if(image != null)
{
// I draw out the image...
}
}
public void setImage(BufferedImage image)
{
this.image = image;
this.repaint();
}
public void setRotation(double rotation)
{
this.rotation = rotation;
this.repaint();
}
public void setScale(double scaleX, double scaleY)
{
//set the scaling field, then repaint ....
}
// and so on...
}
물론 메인 UI에 ImageCanvas 컨트롤이 있습니다. 캔버스 영역을 다시 칠하는 공용 메서드 (위의 "setRotation"메서드 참조) 만 호출하면됩니다. 나는 간단한 질문이지만 캔버스에 DoubleBuffered 속성을 찾지조차 모른다 ...
도움을 주시면 감사하겠습니다.
JCanvas가 없습니다 ... JPanel을 사용해야합니까? – asdfghjkl
@asdfghjkl : 예, JPanel이며'paint'가 아닌'paintComponent'를 오버라이드합니다. 위의 답변을 수정하여 수정했습니다. –
좋아요, JPanel에서 작동합니다. 이것이 스윙의 "모범 사례"가 될 수 있거나 해킹이되는지는 모르겠지만 감사합니다. – asdfghjkl