조회 수 796 추천 수 8 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
http://user.chol.com/~oc985210/download/PNG2DIB.zip

다운로드

VC만으로 게임을 만들 때 그림 처리가 상당히 곤란하시죠? 리소스로 넣자니 실행파일 크기가 커지고, 비트맵 파일로 불러들일려고 해도 상당히 귀찮잖아요. (아니라고 하시면 곤란-_-;)

 

PNG 타입의 그림 파일은 여러분도 잘 아시다시피 RPG만들기 2000부터 지원해온 그림 파일입니다. 이런 파일을 간편하게 DC 형태로 바꿔주는 라이브러리...의 소스입니다.

 

사용하실 때는 컴파일 결과의 DLL파일과 동봉된 두 DLL파일과 헤더파일 두개를 모두 한곳에 몰아넣고 Image.h만 인클루드 해서 쓰시면 됩니다.

 

메소드를 살펴보지요.

CImage::Get*()

이놈들은 그림파일을 연 다음에 GDI 오브젝트들을 사용하고 싶을 때 호출하는 함수가 되겠습니다.

CImage::OpenImgFile(LPCTSTR szFileName, BOOL bSprite = TRUE)

이놈이 핵심인데요, 이놈은 그림파일을 열어서 DIB 사양의 GDI 오브젝트를 만들어줍니다.

 

간단한 사용법이라고 한다면, 예제를 들면 되겠네요.

 

#include <windows.h>
#include "Image.h"

void main()
{
 HDC hdcScr;
 CImage image;
 int x, y, w, h;

 image.OpenImgFile("test.png"); // 그림파일을 열고
 x = (1024 - image.GetBitmapInfo()->bmiHeader.biWidth) / 2, // image.GetBitmapInfo()는 그림에 대한 각종 정보가 들어 있는 구조체의 포인터를 리턴. BITMAPINFO 구조체
 y = (768 - image.GetBitmapInfo()->bmiHeader.biHeight) / 2,
 w = image.GetBitmapInfo()->bmiHeader.biWidth,
 h = image.GetBitmapInfo()->bmiHeader.biHeight;

 hdcScr = GetDC(NULL); // DC를 받아서
 if(image.HasAlpha()) // 투명색이 있다면
 {
  BitBlt(hdcScr, x, y, w, h, *image.GetMaskImage(), 0, 0, SRCAND); // 마스크를 찍어주고
 }
 BitBlt(hdcScr, x, y, w, h, image, 0, 0, image.HasAlpha() ? SRCPAINT : SRCCOPY); // 그 위에 그림을 뾱[...]

 ReleaseDC(NULL, hdcScr);
}

 

뭐, 대충 이런 느낌으로 쓰시면[...]

 

소스 파일에는 상당히 자세하게 주석을 단다고 달아뒀으니[...] 아마 이해하는데 큰 어려움은 없을거라고[...]

 

참, 컴파일 하실 때는 Win32 Dynamic-Link Library로 프로젝트를 생성하셔서 쓰셔야 할겁니다~_~ 그리고 동봉된 lib파일도 필수로 삽입을..

 

ps. 테스트 환경은 펜티엄 M 프로세서 1.5기가헤르츠, 윈도우즈 엑스피였고, 문제 없이 잘 돌아갔습니다.

ps2. 동봉된 DLL 파일은 각각 libpng.org, zlib.net에서 소스를 받아서 Win32 DLL ASM Release 에서 컴파일했습니다.

ps3. 이걸로 조만간 어떠한 게임이 만들어질 예정[...]


?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
» RPG Maker PNG 그림파일을 출력할 수 있는 라이브러리 file 에스페란사 2005.08.02 796
83 언어/기타 스위치가 변수를 이길수 있다는걸 알아보자 『연금술사』 2005.07.30 818
82 언어/기타 이것저것!! RM2000을 배워보자! 2 Nelba 2005.07.30 636
81 언어/기타 간단한 총싸움 만들어 볼까 ? - 다크™의 강좌 - 다크세이버™ 2005.07.30 464
80 RPG Maker 2000,2003으로만드는 전략시뮬 무역장사 2005.07.30 1470
79 RPG Maker RXP 이동 루트 설정 설명 『연금술사』 2005.07.29 835
78 언어/기타 총게임을 만들어볼까? 다크세이버™ 2005.07.28 1333
77 RPG Maker RPGXP 기본 팁 십자군v 2005.07.28 1332
76 언어/기타 캐릭터레이더 사용법[얼굴칩만들기편] 혼돈의하늘32 2005.07.26 2198
75 언어/기타 액알에서 카운터 시스템을 만들어보자! 1 file 한재영 2005.07.23 810
74 RPG Maker RXP 메뉴/맵 배치/이벤트 설명 『연금술사』 2005.07.23 1619
73 언어/기타 이것저것!! RM2000을 배워보자! Nelba 2005.07.22 867
72 RPG Maker RPG만들기2003 간단소개( 혼돈의하늘32 2005.07.22 1106
71 RPG Maker 침대를 만들어보자. file 아이디어 생산기 2005.07.21 1116
70 언어/기타 프루티룹스로 영어 듣기 평가를 만들어 봅시다... file 상혁군 2005.07.21 738
69 RPG Maker RPG2003의맵만들기에서 제일 중요한 기능 혼돈의하늘32 2005.07.21 467
68 RPG Maker 데이터베이스 설명 선백 2005.07.17 1079
67 RPG Maker RXP DB 설명 『연금술사』 2005.07.13 1126
66 언어/기타 허접들의 nwc 다루기 - 멜로디 쓰기 file 예쓰™ 2005.07.12 1298
65 언어/기타 액알에서의 회피율을 만들어봅시다~~~ のㅏ②뜨 2005.07.11 868
Board Pagination Prev 1 ... 42 43 44 45 46 47 48 49 50 51 Next
/ 51






[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)