Java swing drawImage

이미지 사용 지원 은 자바. applet, 자바. awt, 자바. awt. image 패키지 에 분포 되 어 있 습 니 다.모든 그림 은 자바 awt. Image 대상 으로 표 시 됩 니 다.Image 류 를 제외 하고 자바. awt 패 키 지 는 Graphics 류 의 drawImage 방법, Toolkit 대상 의 getImage 방법 과 MediaTracker 류 등 기본 적 인 이미지 지원 을 제공 합 니 다.java. applet 패키지 에서 Applet 류 의 getImage 방법 은 URL 로 그림 을 쉽게 불 러 올 수 있 습 니 다.마지막 으로 자바. awt. image 패 키 지 는 그림 을 만 들 고 조작 하 며 관찰 할 수 있 는 인터페이스 와 클래스 를 제공 합 니 다.
그림 불 러 오기
AWT 는 GIF 와 JPEG 두 가지 형식의 그림 을 간단하게 불 러 올 수 있 습 니 다.Applet 과 Toolkit 류 는 getImage 방법 으로 두 가지 형식 을 사용 할 수 있 습 니 다.이렇게 사용:
myImage = getImage(URL);//Applet 하위 클래스 에서 만 가능 합 니 다.
     혹은
myImage = Toolkit.getDefaultToolkit().getImage(filenameOrURL);

getImage 가 즉시 돌아 오기 때문에 그림 이 불 러 올 때 까지 기다 리 지 않 고 프로그램 에서 다른 작업 을 수행 할 수 있 습 니 다.성능 을 향상 시 킬 수 있 지만 효과 적 인 프로그램 은 더 많은 제어 나 이미지 에 대한 더 많은 정 보 를 필요 로 합 니 다.MediaTracker 클래스 를 사용 하거나 ImageObserver 인터페이스 에서 정 의 된 imageUpdate 방법 으로 그림 의 로드 를 추적 할 수 있 습 니 다.
이 절 은 Memory ImageSource 류 를 사용 하여 그림 을 만 드 는 방법 도 알려 줍 니 다.
그림 보이 기
paintComponent 방법 으로 전 달 된 Graphics 대상 은 그림 을 쉽게 표시 할 수 있 습 니 다.그래 픽 대상 에 drawImage 방법 을 간단하게 호출 하면 됩 니 다.예 를 들 면:
g.drawImage(myImage, 0, 0, this);
이 절 은 drawImage 의 네 가지 형식 을 설명 하 는데 그 중 두 가 지 는 그림 의 크기 를 조정 할 수 있 습 니 다.getImage 처럼 drawImage 도 비동기 적 입 니 다. 그림 이 모두 불 러 오 거나 그리 지 않 았 더 라 도 즉시 되 돌아 갑 니 다.
그림 불 러 오기
이 절 은 그림 에 대응 하 는 Image 대상 을 어떻게 얻 는 지 설명 합 니 다.그림 데이터 가 GIF 나 JPEG 형식 파일 에 있 고 파일 이름 이나 URL 을 알 고 있다 면 Image 를 얻 는 것 은 간단 합 니 다. Applet 이나 Toolkit 의 getImage 방법 을 사용 하면 됩 니 다.getImage 방법 은 이미지 데이터 가 존재 하 는 지 확인 하지 않 고 즉시 되 돌아 갑 니 다.실제 그림 로드 는 프로그램 이 처음 그림 을 그 릴 때 까지 진행 합 니 다.
많은 프로그램 에 있어 서 이 보이 지 않 는 배경 로드 작업 은 매우 잘 작 동 합 니 다.그렇지 않 으 면 그림 의 로드 과정 을 추적 해 야 합 니 다.이 절 은 MediaTracker 류 와 ImageObserver 인 터 페 이 스 를 어떻게 사용 하여 목적 을 달성 하 는 지 설명 한다.
--------------------------------------------------------------------------------
주의:   ImageIcon 클래스 는 미디어 Tracker 를 사용 하여 자신의 그림 을 자동 으로 불 러 옵 니 다.
--------------------------------------------------------------------------------
마지막 으로 이 절 은 Memory ImageSource 와 같은 쉽게 그림 을 만 드 는 방법 을 알려 줍 니 다.
getImage 방법 사용 하기
이 절 은 먼저 Toolkit 의 getImage 방법 을 토론 한 다음 에 Applet 의 getImage 방법 입 니 다.
Toolkit 은 두 가지 getImage 방법 을 알 고 있 습 니 다.
Image getImage(URL url) 
Image getImage(String filename) 

다음은 Toolkit 의 getImage 방법 을 사용 하 는 몇 가지 예 입 니 다.모든 자바 프로그램 과 애플 트 는 이러한 방법 을 사용 할 수 있 지만 애플 트 는 일반적인 안전 제한 을 받는다.특히, 신뢰 하지 않 는 애플 릿 은 getImage 에 파일 이름 을 성공 적 으로 지정 할 수 없습니다. 신뢰 하지 않 는 애플 릿 은 이 컴퓨터 파일 시스템 에서 데 이 터 를 불 러 올 수 없 기 때 문 입 니 다.안전 제한 에서 신뢰 할 수 없 는 애플 릿 에 대한 제한 자 료 를 찾 을 수 있 습 니 다.
Toolkit toolkit = Toolkit.getDefaultToolkit();
Image image1 = toolkit.getImage("imageFile.gif");
Image image2 = toolkit.getImage(
     new URL("http://java.sun.com/graphics/people.gif"));

Applet 클래스 는 두 개의 getImage 방법 을 제공 합 니 다.
Image getImage(URL url)
Image getImage(URL url, String name)
애플 트 만 애플 트 의 getImage 방법 을 사용 할 수 있 습 니 다.또한 Applet 의 getImage 방법 은 완전한 배경 (AppletContext) 에서 만 작 동 할 수 있 습 니 다.이 때문에 이 방법 들 은 구조 방법 이나 하나의 인 스 턴 스 변 수 를 설명 하 는 설명 에서 일 을 할 수 없습니다.init 와 같은 방법 에서 getImage 를 호출 해 야 합 니 다.
다음 코드 범례 는 Applet 의 code > getImage 방법 을 어떻게 사용 하 는 지 보 여 줍 니 다.AWT 를 사용 하여 GUI 를 만 들 고 getCodeBase 와 getDocumentBase 방법 에 대한 설명 을 참고 하 십시오.
//Applet 하위 클래스 의 한 방법 에서:
Image image1 = getImage(getCodeBase(), "imageFile.gif");
Image image2 = getImage(getDocumentBase(), "anImageFile.jpeg");
Image image3 = getImage(
     new URL("http://java.sun.com/graphics/people.gif"));
이미지 불 러 오기 요청 및 추적: MediaTracker 와 ImageObserver
미디어 Tracker 클래스 와 ImageObserver 인 터 페 이 스 를 두 가지 방법 으로 추적 할 수 있 습 니 다.MediaTracker 클래스 는 많은 프로그램 에 충분 합 니 다.미디어 Tracker 인 스 턴 스 를 만 들 고 하나 이상 의 그림 을 추적 하 는 것 을 알려 주 고 필요 하 다 면 미디어 Tracker 에 그림 의 상 태 를 조회 해 야 합 니 다.이미지 애니메이션 의 외관 과 성능 을 향상 시 키 는 데 범례 가 있다.
애니메이션 범례 는 MediaTracker 의 두 가지 유용 한 기능 을 보 여 줍 니 다. 이미지 데이터 의 불 러 오 기 를 요청 하고 불 러 오 기 를 기다 리 는 것 입 니 다.그림 데 이 터 를 불 러 오 라 고 요청 하면 checkID 와 checkAll 의 불 인자 형식 을 사용 할 수 있 습 니 다.파 라 메 터 를 true 로 설정 하면 불 러 오지 않 은 그림 을 불 러 올 수 있 습 니 다.또는 그림 을 불 러 오 라 고 요청 하고 waitForID 와 waitForAll 방법 으로 기다 릴 수 있 습 니 다.
ImageObserver 인 터 페 이 스 는 MediaTracker 보다 더 긴밀 한 추적 을 할 수 있 습 니 다.Component 클래스 에서 사용 하기 때문에 구성 요 소 는 표시 할 그림 을 불 러 온 후에 다시 그립 니 다.ImageObserver 인 터 페 이 스 를 사용 하기 위해 서 는 ImageObserver 의 imageUpdate 방법 을 실현 하고 실현 대상 이 이미지 관찰 기로 등록 되 어 있 는 지 확인 해 야 합 니 다.보통 이 등록 은 drawImage 방법 으로 ImageObserver 를 지정 하 는 데 발생 합 니 다. 다음 절 에서 설명 한 것 처럼.이미지 업데이트 방법 은 그림 의 정 보 를 볼 수 있 을 때 언제든지 호출 됩 니 다.
MediaTracker API 문 서 를 탐색 하면 Component 류 가 유용 해 보 이 는 두 가지 방법 을 정의 할 수 있 습 니 다. checkImage 와 prepareImage.MediaTracker 류 는 어느 정도 이런 방법 을 불필요 하 게 만 들 었 다.
Memory ImageSource 로 그림 만 들 기
Memory ImageSource 와 같은 이미지 생산자 의 도움 으로 당신 의 행운 의 손 낙서 에서 이미 지 를 구성 할 수 있 습 니 다.다음 코드 범례 는 X 축 을 따라 검은색 에서 파란색 으로 그 라 데 이 션 하고 Y 축 을 따라 검은색 에서 빨간색 으로 그 라 데 이 션 하 는 100 x100 그림 을 만 들 려 고 합 니 다.
int w = 100;
int h = 100;
int[] pix = new int[w * h];
int index = 0;
for (int y = 0; y < h; y++) {
     int red = (y * 255)/(h - 1);
     for (int x = 0; x < w; x++) {
           int blue = (x * 255)/(w - 1);
           pix[index++] = (255 << 24) | (red << 16) | blue;
     }
}
Image img = createImage(new MemoryImageSource(w, h, pix, 0, w));
그림 보이 기
다음 코드 는 구성 요소 영역의 왼쪽 상단 (0, 0) 에 그림 을 원본 크기 로 표시 합 니 다.
g.drawImage(image, 0, 0, this);
아래 코드 는 좌표 (90, 0) 에 300 픽 셀 너비 62 픽 셀 높이 로 축 소 된 그림 을 표시 합 니 다.
g.drawImage(myImage, 90, 0, 300, 62, this);
아래 코드 세 션 은 애플 트 가 그림 을 불 러 오고 두 번 표시 하 는 것 을 보 여 줍 니 다. 위 에서 보 이 는 두 세 션 을 사용 하 십시오. ImageDisplayer. 자바 에서 완전한 코드 를 찾 을 수 있 습 니 다.
이 그림 은 이 applt 의 GUI 입 니 다. 그 applt 을 실행 하려 면 그림 을 누 르 십시오. 이 applt 은 새 탐색 창 에 표 시 됩 니 다.
Graphics 클래스 는 아래 drawImage 방법 을 설명 합 니 다. 이 값 은 거의 사용 되 지 않 지만 boolean 값 을 되 돌려 줍 니 다. 그림 이 완전히 불 러 오고 완전히 그 려 지면 반환 값 은 true 입 니 다. 그렇지 않 으 면 반환 값 은 false 입 니 다.
boolean drawImage(Image img, int x, int y, ImageObserver observer) 
boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer) 
boolean drawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer) 
boolean drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer) 

drawImage 방법 은 다음 과 같은 인자 가 있 습 니 다.
Image img
그 릴 그림 입 니 다.
int x, int y
그림 왼쪽 상단 좌표.
int width, int height
그림 의 너비 와 높이.
Color bgcolor
그림 아래 색상 입 니 다. 그림 에 투명 픽 셀 이 포함 되 어 있 을 때 유용 합 니 다. 그림 은 지정 한 색상 배경 에 표 시 됩 니 다.
ImageObserver observer
ImageObserver 인 터 페 이 스 를 실현 하 는 대상 입 니 다. 이 대상 을 이미지 관찰자 로 등록 하기 때문에 그림 의 새로운 정 보 를 볼 수 있 을 때 알려 줍 니 다. 대부분의 구성 요 소 는 this 를 간단하게 지정 할 수 있 습 니 다.
구성 요소 가 this 를 이미지 관찰자 로 지정 할 수 있 는 이 유 는 Component 클래스 가 ImageObserver 인 터 페 이 스 를 실 현 했 기 때 문 입 니 다. 이미지 데이터 가 불 러 올 때 repaint 방법 을 호출 하 는 것 은 일반적으로 원 하 는 것 입 니 다.
drawImage 방법 은 그림 데 이 터 를 불 러 오 면 되 돌려 줍 니 다. drawImage 가 전체 그림 만 그 리 는 지 확인 하려 면 그림 의 불 러 오 는 것 을 추적 해 야 합 니 다.

좋은 웹페이지 즐겨찾기