|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세 : 필드 | 생성자 | 메소드 |
java.lang.Object java.awt.Image java.awt.image.VolatileImage
public abstract class VolatileImage
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
를, 비동기 콜백 통지를 위해서(때문에) 기록할 필요는 없습니다.
필드의 개요 | |
---|---|
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 |
필드의 상세 |
---|
public static final int IMAGE_OK
public static final int IMAGE_RESTORED
public static final int IMAGE_INCOMPATIBLE
GraphicsConfiguration
객체와 호환성이 없기 때문에, 적절한 재생성이 필요합니다. validate
로부터 이 반환값이 돌려주어졌을 때에, 이미지를 그대로 사용했을 경우의 결과는 예측할 수 없습니다.
protected int transparency
GraphicsConfiguration.createCompatibleVolatileImage(int,
int, int)
,
GraphicsConfiguration.createCompatibleVolatileImage(int,
int, ImageCapabilities, int)
,
Transparency
생성자 의 상세 |
---|
public VolatileImage()
메소드의 상세 |
---|
public abstract BufferedImage getSnapshot()
BufferedImage
는, 요구가 있던 시점의 VolatileImage
의 내용만을 반영한 것이어, 그 이후로 VolatileImage
가 변경되어도 갱신되지 않습니다.
VolatileImage
의
BufferedImage
표현BufferedImage
public abstract int getWidth()
VolatileImage
의 폭을 돌려줍니다.
VolatileImage
의 폭public abstract int getHeight()
VolatileImage
의 높이를 돌려줍니다.
VolatileImage
의 높이public ImageProducer getSource()
getSource
와 같은 조작에서는, 픽셀 read에 중점이 놓여지지 않는 조작보다 퍼포먼스가 떨어집니다. 이미지로부터 읽히는 픽셀치는, 취득된 시점의 내용만을 반영한 것입니다. 이 메소드는 요구된 시점의 이미지의 snapshot를 가져옵니다. 반환되는 ImageProducer 객체는 정적인 snapshot 이미지이며, 오리지날의 VolatileImage 가 아닙니다. getSource()를 호출하면(자), getSnapshot(). getSource()를 호출했을 경우와 같은 결과를 얻을 수 있습니다.
Image
내의 getSource
BufferedImage
표현의
픽셀 생성에 사용 가능한
ImageProducer
ImageProducer
,
getSnapshot()
public Graphics getGraphics()
Graphics2D
를 돌려줍니다만, 여기에서는 하위 호환을 위해서(때문에) 제공됩니다. Graphics2D
를 돌려주도록(듯이) 선언되고 있기 (위해)때문에,createGraphics
가 편리합니다.
Image
내의 getGraphics
Graphics2D
Graphics
,
Component.createImage(int, int)
public abstract Graphics2D createGraphics()
VolatileImage
에 draw 하기 위해서 사용할 수 있는 Graphics2D
를 생성합니다.
Graphics2D
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
public abstract boolean contentsLost()
validate
호출해 이후에 draw 데이터가 없어지고 있는 경우는 true
. 이 메소드는 이미지에 관련하는 일련의 draw 처리의 마지막으로, 어플리케이션으로부터 불려 가 이미지의 검증, 재draw가 필요한가 어떤가를 확인합니다.
true
,
그렇지 않은 경우는 false
public abstract ImageCapabilities getCapabilities()
VolatileImage
의 기능에 대한 정보를 가진다
ImageCapabilities
public int getTransparency()
Transparency
내의 getTransparency
VolatileImage
의 투명도Transparency.OPAQUE
,
Transparency.BITMASK
,
Transparency.TRANSLUCENT
|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세 : 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.