*** 공부 방법 ***
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을 곱해 주어서 크기를 조절한다.
확대 성공.
'WIN32API FrameWork > 한단계씩 직접 구현' 카테고리의 다른 글
51. 원형 충돌 (0) | 2022.06.02 |
---|---|
50. 데미지 (0) | 2022.06.02 |
47. 이펙트 (0) | 2022.06.01 |
46. 충돌 처리 6 - 충돌 로직 개선 및 박스충돌 완성 (0) | 2022.05.30 |
45. 충돌 처리 5 - 실제 충돌체 생성 및 관리 (0) | 2022.05.30 |