조회 수 825 추천 수 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
번호 분류 제목 글쓴이 날짜 조회 수
1004 언어/기타 목에 좋은것들.... 1 켄타 2005.05.17 2070
1003 RPG Maker 좌표대입(ARPG) 사고실험.[이론편] 늑대소년 2005.05.18 1509
1002 언어/기타 스킬데미지를 10000이상 뜨게해보자.(턴알,액알 둘다) Dship 2005.05.18 1888
1001 언어/기타 Fruity Loops에서 FX탭 사용방법 (1) Mr^Lee 2005.05.18 1709
1000 RPG Maker RPG XP 배워보기 <변수를 마스터하자 상편> 1 덩키동크 2005.05.18 2206
999 언어/기타 100%고수강의!(변수이론) 늑대소년 2005.05.18 2470
998 언어/기타 나름대로 - 변수강좌 켈리시 2005.05.18 1624
997 언어/기타 변수(變數)의 기초 바람을 가르는 자 2005.05.19 1270
996 언어/기타 이번에는 오프닝을! 장아찌 2005.05.20 2635
995 RPG Maker 액션RPG 속성무기를 만들어보자!! 천룡수 2005.05.20 1538
994 RPG Maker 아르바이트를 만들자 . - 1 Norid 2005.05.20 1739
993 언어/기타 플레이어가 자기의 이름을 정한다 . [영어] file Norid 2005.05.21 1780
992 언어/기타 레벨업을 하라 . 그리하면 살것이니.. 1 file Norid 2005.05.22 1574
991 [RPG2000] 가이드북 -7- 창조도시 2005.05.22 11106
990 언어/기타 나라의 PHP 초보탈출 - 1편 나라 2005.05.22 1732
989 RPG Maker 경영 RPG만들기[콤플리트판] 늑대소년 2005.05.24 2039
988 [RPG2000] 가이드북 -1- (표지내용무) 창조도시 2005.05.25 14508
987 언어/기타 [c++] 생성자,파괴자 챔피온 2005.05.26 1668
986 언어/기타 《완벽하게 현실적인 게임을 만들려면 해야되는 조작 몇 가지》-[上편] 자이크로 2005.05.27 1852
985 언어/기타 [R2000] 초간단 단거리액알 2 비밀소년 2005.05.27 2521
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 51 Next
/ 51


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

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