VolatileImage (Java Platform SE 6) - xrath.com 에서 번역됨

개요 | 패키지 | 클래스 | 사용 | 계층 트리 | 비추천 API | 색인 | 헬프

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` 가 변경되어도 갱신되지 않습니다.

  반환값:
    이 `VolatileImage` 의 `BufferedImage` 표현
  관련 항목:
    `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`

개요 | 패키지 | 클래스 | 사용 | 계층 트리 | 비추천 API | 색인 | 헬프

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 도 참조해 주세요.