2013년 9월 13일 금요일

Java Graphics 객체 추가 정보 및 API 내용 정리

4장.그 래 픽


Graphics 객체

setXORMode() 역할은 무엇인가?
:: Java Doc 설명

setXORMode

public abstract void setXORMode(Color c1)
Sets the paint mode of this graphics context to alternate between this graphics context's current color and the new specified color. This specifies that logical pixel operations are performed in the XOR mode, which alternates pixels between the current color and a specified XOR color.
When drawing operations are performed, pixels which are the current color are changed to the specified color, and vice versa.
Pixels that are of colors other than those two colors are changed in an unpredictable but reversible manner; if the same figure is drawn twice, then all pixels are restored to their original values.
Parameters:
c1 - the XOR alternation color

간다하게 말해서 : 서로 색을 xor 하여 표시 한다.  원래색에 xor를 두번하면 원래색으로 변한다.
예전에 잠시 애니메이션 효과를 위해서 사용되기 함.
- 영어 단어 ::
vice versa - 반대로

-- XXX
update() 함수의 역할은

java.awt.Graphics
:: 자바 API의 대부분의 그래픽 기능을 캡슐화하고 있다.
그래픽 환경 (Graphics context) :: 이것이 정의하는 환경에는 그려질 때의 색상, 텍스트가 표시될 글꼴, 모든 상대적인 좌표들을 나타낼 그림의 원점과 , 영역 밖에는 그려지지 않도록 잘라진 영역들이 포함된다.

상태 변수를 얻기/설정, 선 긋고 , 사각형을 그리고, 사각형을 채우며,

java.awt.ImageObserver
:: 는 image loading process를 모니터하는 역할을 하는데 이미지를 로딩하는 thread는 새로운 data가 도착하면 ImageObserver에게 알리게 된다. Component 클래스는 ImageObserver 인터페이스를 구현하기 때문에 paint()라는 메소드를 호출하게 되면 이미 해당 Component의 paint()를 override를 해서 쓰고 있는 것이기 때이다. 따라서 drawImage를 호출할 때 마지막 인자로 this를 넘겨주는 것이 안전하다

Caption : 자막, slightly : 약간 , render : 표현하다 , crosshair = 십자선
java.awt.SystemColor
:: natvie GUI 객체의 색을 상징적으로 요약(캡슐)화 하여 정의 클래스 이다.

Double-Buffering & Clipping
:: 부드러운 애니메이션을 위한 중요한 기법
더블버퍼링 기법은 모든 그림을 Off-screen(버퍼)에 그리고(drawing) 하고, 버퍼의 내용을 실제 on-screen에 한꺼번에 복사하는 것. (즉 메모리에서 그림을 그리고 그내용을 이미지 처럼 한번에 복사한다는 내용이다.)
off-screen(buffer)에 해당하는 하는 것은 java.awt.Image 객체이다. Component.createImage() Method를 사용하여 생성한다.
~~ 이것은 사용하는 이유 : on-screen 표시가 각각의 프레임마다 완전히 갱신되기 때문에
** repaint() 호출시 :: update() 호출후 paint() 호출한다. update()의 기본 구현은 화면 전체를 지우는 역할을 수행한다.
클리핑 영역은 Graphics의 repaint() 함수에 크기를 설정하여 다시는 그리는 방법이다.
** 그러나 현재 그다지 큰 효과가 없고 메모리나 cpu를 더 사용하는 것 같다.
즉 애플릿을 전체를 다시는 그리는 것이 별 문제가 없으며 현재 시험 코드로는 다시는 그리는 것이 빠름.

java.awt.MediaTracker
:: 이미지를 로딩을 도와주는 도구 클래스 이다.

Image Handling...
  • Scaling : 확대, 축소
  • Cropping : 잘라내기
  • Flipping : 뒤집기

java -Dkey=value
  • -D 속성을 통해서 추가 속성을 정의 할 수 있으며 또한 System.getProperty(“key”);를 통해서 읽을 수 있다.

  • 객체를 생성하는 다른 방법 Class.newInstance()를 사용하는 방법
  • java.lang.Error의 서브 클래스인 경우는 일반적으로 동적 탑재나 메모리 부족과 같은 가상 머신문제를 나타낸다. 이 종류의 예외는 거의 모든 경우에 있어서 복구가 불가능으로 간주되며 캐치되지 않아야 한다.
아래와 같은 구문도 가능한다.
try{
}finally{
}
//catch 구문은 0 개 이상 추가 될 수 있다.

정적 초기화 구문의 일반적인 용도는
natvie 메소드의 로딩 즉 System.load()나 System.loadLibrary() 하는 용도 주로 사용한다.
static{}

어떤 클래스가 final로 선언되었다면 상속을 생성할 수 없다.

댓글 없음: