hyrule 2022. 6. 1. 23:00

http://hyrule.tistory.com/111 

 

*** 공부 방법 ***

1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처

hyrule.tistory.com

 


[ 사전 지식 ]

StretchBlt(hDC,
        (int)RenderLT.x, (int)RenderLT.y, (int)(RenderSize.x), (int)(RenderSize.y),
        Current->m_Sequence->GetTexture()->GetDC(CurrentFrame), 0, 0,
        (int)m_Size.x, (int)m_Size.y, SRCCOPY);

- 마지막 인자를 제외하고, TransparentBlt() 함수와 정확히 똑같은 인자들을 받는다.

- 컬러키를 사용하지 못하는 것만 빼고 동일하다고 보면 된다.

 

 

- 0: hDC

- 1 2: 어디서부터 그릴것인지?

- 3 4: 얼마만큼의 사이즈로 그릴것인지?(이 값을 그림보다 크게/작게 설정하면 이미지가 확대/축소되어 출력된다.

- 5: memDC

- 6, 7: 원본 그림의 어디부터 복사해올것인지?(LT)

- 7, 8: 원본 그림의 어디까지 복사해올것인지?(RB)

- 9:  rop(raster-operation code)이다. 데이터를 어떤 방식으로 읽어들일지를 결정하는 함수이다. SRCCOPY를 사용하면 된다.


- 도트 게임의 도트는 한 픽셀 단위로 찍는다.

- 때문에, 원본 이미지의 사이즈는 매우 작다.

- 이게 한 픽셀당 도트 하나라고 가정했을 때의 원본 이미지 크기이다. 매우 작다.

- 그러므로 화면에 출력하기 위에서는, 사이즈를 키울 필요가 있다.


class CGameObject

< float m_Scale >

- 스케일을 조정할 변수를 추가한다. 생성자에서 기본값을 1.f로 설정해 준다.

< void SetScale > 추가

 

< Render() >

- 현재 컬러키를 쓰지 않을 때 호출하는 Bitblt() 함수는 확대해서 그릴 수 없다.

이 함수를 StretchBit() 함수로 교체해 준다.

 

 

- 우리가 건드려야 할 부분은, TransparentBlt(), StretchBlt() 함수의 3,4번 인자이다. 3, 4번 인자의 사이즈를 늘리면 그만큼 그려지는 크기도 증가한다. -> 이 부분에 m_Scale을 곱해 주어서 크기를 조절한다.


확대 성공.

GameFrameworkStepbyStep_49_Scale.zip
0.31MB