JavaTM Platform
Standard Ed. 6

java.awt.image
클래스 VolatileImage

java.lang.Object 
  상위를 확장 java.awt.Image 
      상위를 확장 java.awt.image.VolatileImage
모든 구현된 인터페이스:
Transparency


public abstract class VolatileImage
extends Image
implements Transparency

VolatileImage 는, 어플리케이션의 제어를 넘어, operating system나 다른 어플리케이션으로부터, 상황에 따라 언제라도 내용을 파기할 수 있는 이미지입니다. 일부의 플랫폼에서는, 하드웨어 가속화를 이용할 수 있을 가능성이 있기 (위해)때문에, VolatileImage 객체의 이용으로 퍼포먼스가 큰폭으로 향상합니다.  

이미지의 draw 표면 (이미지의 내용이 실제로 상주하는 메모리 영역)은, 그 메모리의 내용이 그 밖에 이동하는 것에 의해 없어지는지, 무효화될 가능성이 있습니다. 따라서 draw 표면을 복원 또는 재생성해, 그 draw 표면의 내용을 재draw 할 필요가 있습니다. VolatileImage 는 이러한 문제가 발생했을 때에 이것을 검출해, 수정하기 위한 인터페이스를 제공합니다.  

VolatileImage 객체가 생성될 때에는, 이미지 지원를 위해, 비디오 메모리 (VRAM)등의 제한된 system resource를 할당할 수 있습니다. VolatileImage 객체가 사용되지 않게 되었을 경우에는 가베지 컬렉트되어 할당할 수 있었던 system resource가 해제됩니다만, 이 프로세스의 실행 타이밍은 일정이 아닙니다. 예를 들어 윈도우 사이즈를 변경하면(자), 변경마다 백 버퍼가 재생성됩니다만, 이와 같이 다수의 VolatileImage 객체를 생성하는 어플리케이션에서는, 사용되지 않게 된 객체가 시스템상에 남아 있다고 하는 이유만으로, 새로운 VolatileImage 객체의 생성에 최적인 자원이 부족할 가능성이 있습니다. 이 경우, 새로운 VolatileImage 객체가 생성되어도, 고속의 메모리에 생성되었을 경우에 비해 퍼포먼스는 저하합니다. flush 메소드는 언제라도 호출해, VolatileImage 로 사용되는 자원을 사전에 해제해, 이후의 VolatileImage 객체의 고속화를 방해하지 않게 할 수가 있습니다. 이 방법에서는, 무효가 된 VolatileImage 객체에 점유 되고 있는 자원 상태를 어플리케이션으로부터 제어하기 쉬워집니다.  

이 이미지는 직접 서브 클래스화하지 않고,Component.createVolatileImage 또는 GraphicsConfiguration.createCompatibleVolatileImage(int, int) 메소드를 사용해 생성합니다.  

다음에 VolatileImage 객체의 예를 나타냅니다.

 // image creation
 VolatileImage vImg = createVolatileImage(w, h);

 
 // rendering to the image
 void renderOffscreen() {
        do {
            if (vImg.validate(getGraphicsConfiguration()) ==
                VolatileImage.IMAGE_INCOMPATIBLE)
            {
                // old vImg doesn't work with new GraphicsConfig; re-create it
                vImg = createVolatileImage(w, h);
            }
            Graphics2D g = vImg.createGraphics();
            //
            // miscellaneous rendering commands...
            //
            g.dispose();
        } while (vImg.contentsLost());
 }


 // copying from the image (here, gScreen is the Graphics
 // object for the onscreen window)
 do {
        int returnCode = vImg.validate(getGraphicsConfiguration());
        if (returnCode == VolatileImage.IMAGE_RESTORED) {
            // Contents need to be restored
            renderOffscreen();      // restore contents
        } else if (returnCode == VolatileImage.IMAGE_INCOMPATIBLE) {
            // old vImg doesn't work with new GraphicsConfig; re-create it
            vImg = createVolatileImage(w, h);
            renderOffscreen();
        }
        gScreen.drawImage(vImg, 0, 0, this);
 } while (vImg.contentsLost());
 

정보는 잠재적으로 ImageProducer 로부터 얻을 수 있기 (위해)때문에, 이 클래스는, 비동기 통지에 ImageObserver 파라미터를 사용하는 메소드를 포함한 Image 클래스로부터 서브 클래스화해 주세요. 이 VolatileImage 는 비동기 소스로부터 로드 되지 않기 때문에,ImageObserver 파라미터를 가지는 복수의 메소드가, 데이터가 ImageProducer 로부터 취득이 끝난 상태인것 같이 동작합니다. 여기서 중요한 (일)것은, 이러한 메소드로부터의 반환값을 확인해도, 정보가 유효한가 어떤가는 판단할 수 없다고 하는 것입니다. 따라서, 이러한 메소드로 사용되고 있는 ImageObserver 를, 비동기 콜백 통지를 위해서(때문에) 기록할 필요는 없습니다.

도입된 버젼:
1.4

필드의 개요
static int IMAGE_INCOMPATIBLE
          검증 이미지는 건네받은 GraphicsConfiguration 객체와 호환성이 없기 때문에, 적절한 재생성이 필요합니다.
static int IMAGE_OK
          검증 이미지는 그대로 사용 가능합니다.
static int IMAGE_RESTORED
          검증 이미지는 복원되어 사용 가능하게 되어 있습니다.
protected  int transparency
          이 이미지의 작성에 사용된 투명도의 값입니다.
 
클래스 java.awt. Image 로부터 상속된 필드
accelerationPriority , SCALE_AREA_AVERAGING , SCALE_DEFAULT , SCALE_FAST , SCALE_REPLICATE , SCALE_SMOOTH , UndefinedProperty
 
인터페이스 java.awt. Transparency 로부터 상속된 필드
BITMASK , OPAQUE , TRANSLUCENT
 
생성자 의 개요
VolatileImage ()
           
 
메소드의 개요
abstract  boolean contentsLost ()
          마지막 validate 호출해 이후에 draw 데이터가 없어지고 있는 경우는 true.
abstract  Graphics2D createGraphics ()
          이 VolatileImage 에 draw 하기 위해서 사용할 수 있는 Graphics2D 를 생성합니다.
abstract  ImageCapabilities getCapabilities ()
          이 VolatileImage 의 고유의 기능을 조회할 수 있는 ImageCapabilities 객체를 돌려줍니다.
 Graphics getGraphics ()
          이 메소드는 Graphics2D 를 돌려줍니다만, 여기에서는 하위 호환을 위해서(때문에) 제공됩니다.
abstract  int getHeight ()
          VolatileImage 의 높이를 돌려줍니다.
abstract  BufferedImage getSnapshot ()
          이 객체의 정적인 snapshot 이미지를 돌려줍니다.
 ImageProducer getSource ()
          이 VolatileImage 의 ImageProducer 를 돌려줍니다.
 int getTransparency ()
          투명도를 돌려줍니다.
abstract  int getWidth ()
          VolatileImage 의 폭을 돌려줍니다.
abstract  int validate (GraphicsConfiguration  gc)
          마지막 validate 호출해 이후에 이미지의 draw 표면이 없어지고 있는 경우, 그 draw 표면을 복원합니다.
 
클래스 java.awt. Image 로부터 상속된 메소드
flush , getAccelerationPriority , getCapabilities , getHeight , getProperty , getScaledInstance , getWidth , setAccelerationPriority
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
 

필드의 상세

IMAGE_OK

public static final int IMAGE_OK
검증 이미지는 그대로 사용 가능합니다.

관련 항목:
정수 필드치

IMAGE_RESTORED

public static final int IMAGE_RESTORED
검증 이미지는 복원되어 사용 가능하게 되어 있습니다. 복원에 의해 이미지의 내용이 없어지고 있는 것에 주의해 주세요.

관련 항목:
정수 필드치

IMAGE_INCOMPATIBLE

public static final int IMAGE_INCOMPATIBLE
검증 이미지는 건네받은 GraphicsConfiguration 객체와 호환성이 없기 때문에, 적절한 재생성이 필요합니다. validate 로부터 이 반환값이 돌려주어졌을 때에, 이미지를 그대로 사용했을 경우의 결과는 예측할 수 없습니다.

관련 항목:
정수 필드치

transparency

protected int transparency
이 이미지의 작성에 사용된 투명도의 값입니다.

도입된 버젼:
1.5
관련 항목:
GraphicsConfiguration.createCompatibleVolatileImage(int, int, int) , GraphicsConfiguration.createCompatibleVolatileImage(int, int, ImageCapabilities, int) , Transparency
생성자 의 상세

VolatileImage

public VolatileImage()
메소드의 상세

getSnapshot

public abstract BufferedImage  getSnapshot()
이 객체의 정적인 snapshot 이미지를 돌려줍니다. 반환되는 BufferedImage 는, 요구가 있던 시점의 VolatileImage 의 내용만을 반영한 것이어, 그 이후로 VolatileImage 가 변경되어도 갱신되지 않습니다.

반환값:
VolatileImageBufferedImage 표현
관련 항목:
BufferedImage

getWidth

public abstract int getWidth()
VolatileImage 의 폭을 돌려줍니다.

반환값:
VolatileImage 의 폭

getHeight

public abstract int getHeight()
VolatileImage 의 높이를 돌려줍니다.

반환값:
VolatileImage 의 높이

getSource

public ImageProducer  getSource()
이 VolatileImage 의 ImageProducer 를 돌려줍니다. VolatileImage 객체는 draw 조작, 화면 또는 다른 VolatileImage 객체에의 이미지 기입용으로 최적화되고 있어 이미지의 픽셀 read 기능은 중시되고 있지 않습니다. 따라서 getSource 와 같은 조작에서는, 픽셀 read에 중점이 놓여지지 않는 조작보다 퍼포먼스가 떨어집니다. 이미지로부터 읽히는 픽셀치는, 취득된 시점의 내용만을 반영한 것입니다. 이 메소드는 요구된 시점의 이미지의 snapshot를 가져옵니다. 반환되는 ImageProducer 객체는 정적인 snapshot 이미지이며, 오리지날의 VolatileImage 가 아닙니다. getSource()를 호출하면(자), getSnapshot(). getSource()를 호출했을 경우와 같은 결과를 얻을 수 있습니다.

정의:
클래스 Image 내의 getSource
반환값:
이 이미지의 BufferedImage 표현의 픽셀 생성에 사용 가능한 ImageProducer
관련 항목:
ImageProducer , getSnapshot()

getGraphics

public Graphics  getGraphics()
이 메소드는 Graphics2D 를 돌려줍니다만, 여기에서는 하위 호환을 위해서(때문에) 제공됩니다. Graphics2D 를 돌려주도록(듯이) 선언되고 있기 (위해)때문에,createGraphics 가 편리합니다.

정의:
클래스 Image 내의 getGraphics
반환값:
이 이미지에의 draw에 사용된다 Graphics2D
관련 항목:
Graphics , Component.createImage(int, int)

createGraphics

public abstract Graphics2D  createGraphics()
VolatileImage 에 draw 하기 위해서 사용할 수 있는 Graphics2D 를 생성합니다.

반환값:
이 이미지에의 draw에 사용된다 Graphics2D

validate

public abstract int validate(GraphicsConfiguration  gc)
마지막 validate 호출해 이후에 이미지의 draw 표면이 없어지고 있는 경우, 그 draw 표면을 복원합니다. 한층 더 이 이미지가 지정된 GraphicsConfiguration 파라미터에 대해서 검증해, 이 이미지로부터 GraphicsConfiguration 에의 조작이 호환성을 가질지 어떨지를 확인합니다. 호환성을 가지지 않는 편성이 생각되는 것은, VolatileImage 객체가 있는 그래픽 디바이스상에서 생성되어 다른 그래픽 디바이스상에서 draw에 사용되는 것 같은 경우입니다. VolatileImage 객체는 디바이스 고유의 것이 되는 경향이 강하기 때문에, 이러한 경우에서는 의도했던 대로 동작하지 않을 가능성이 있어, 이 validate 호출의 반환값으로 이 부정합이 통지됩니다. gc 에 대한 값이 null 의 경우, 혹은 부정한 경우는,validate 로부터 부정한 값이 돌려주어져 나중에 draw에 대한 문제가 발생할 가능성이 있습니다.

파라미터:
gc - 이 이미지에 대해서 검증된다 GraphicsConfiguration 객체. gc 가 null 의 경우, 검증 메소드의 호환 테스트가 스킵 된다
반환값:
이미지가 검증 불요의 경우는 IMAGE_OK
이미지의 복원이 필요한 경우는 IMAGE_RESTORED. 이미지의 복원을 실시했을 경우는, 내용에 영향을 주고 있기 (위해)때문에, 이미지의 재draw가 필요한 가능성이 있다
이미지가 validate 메소드에게 건네졌다 GraphicsConfiguration 객체와 호환성이 없는 경우는 IMAGE_INCOMPATIBLE. 이 경우, 이 GraphicsConfiguration 로 정상적으로 사용 가능한 이미지를 얻기 위해, 새로운 Component 또는 GraphicsConfiguration 를 사용해, 이미지를 재생성할 필요가 된다. 호환성이 없는 이미지에 대해서는, 복원이 필요한가 어떤가의 체크는 실행되지 않고, IMAGE_INCOMPATIBLE 가 되돌려진 뒤도 이미지 상태는 변경되지 않는다. 이미지의 복원이 필요한가 어떤가는 이 반환값에서는 판단할 수 없는
관련 항목:
GraphicsConfiguration , Component , IMAGE_OK , IMAGE_RESTORED , IMAGE_INCOMPATIBLE

contentsLost

public abstract boolean contentsLost()
마지막 validate 호출해 이후에 draw 데이터가 없어지고 있는 경우는 true. 이 메소드는 이미지에 관련하는 일련의 draw 처리의 마지막으로, 어플리케이션으로부터 불려 가 이미지의 검증, 재draw가 필요한가 어떤가를 확인합니다.

반환값:
draw 표면의 복원이 필요한 경우는 true, 그렇지 않은 경우는 false

getCapabilities

public abstract ImageCapabilities  getCapabilities()
이 VolatileImage 의 고유의 기능을 조회할 수 있는 ImageCapabilities 객체를 돌려줍니다. 프로그래머가, 생성한 특정의 VolatileImage 객체의, 보다 상세한 정보를 취득할 수 있게 됩니다. 예를 들어 사용자가 VolatileImage 를 생성할 때에, 그 사이즈의 이미지를 생성하기 위한 빈영역이 비디오 메모리에 남아 있지 않은 경우, 생성되는 객체는 VolatileImage 입니다만, 이 플랫폼외의 플랫폼에 비하면(자) 퍼포먼스가 떨어질 가능성이 있습니다. 이 문제를 해결하기 위해서는, 메모리에 관한 정보가 필요하게 됩니다.

반환값:
VolatileImage 의 기능에 대한 정보를 가진다 ImageCapabilities
도입된 버젼:
1.4

getTransparency

public int getTransparency()
투명도를 돌려줍니다. OPAQUE, BITMASK, TRANSLUCENT 의 어느쪽이든을 돌려줍니다.

정의:
인터페이스 Transparency 내의 getTransparency
반환값:
VolatileImage 의 투명도
도입된 버젼:
1.5
관련 항목:
Transparency.OPAQUE , Transparency.BITMASK , Transparency.TRANSLUCENT

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.