조회 수 797 추천 수 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. 이걸로 조만간 어떠한 게임이 만들어질 예정[...]


?

  1. PNG 그림파일을 출력할 수 있는 라이브러리

    Date2005.08.02 CategoryRPG Maker By에스페란사 Views797
    Read More
  2. 스위치가 변수를 이길수 있다는걸 알아보자

    Date2005.07.30 Category언어/기타 By『연금술사』 Views819
    Read More
  3. 이것저것!! RM2000을 배워보자! 2

    Date2005.07.30 Category언어/기타 ByNelba Views638
    Read More
  4. 간단한 총싸움 만들어 볼까 ? - 다크™의 강좌 -

    Date2005.07.30 Category언어/기타 By다크세이버™ Views465
    Read More
  5. 2000,2003으로만드는 전략시뮬

    Date2005.07.30 CategoryRPG Maker By무역장사 Views1473
    Read More
  6. RXP 이동 루트 설정 설명

    Date2005.07.29 CategoryRPG Maker By『연금술사』 Views838
    Read More
  7. 총게임을 만들어볼까?

    Date2005.07.28 Category언어/기타 By다크세이버™ Views1335
    Read More
  8. RPGXP 기본 팁

    Date2005.07.28 CategoryRPG Maker By십자군v Views1335
    Read More
  9. 캐릭터레이더 사용법[얼굴칩만들기편]

    Date2005.07.26 Category언어/기타 By혼돈의하늘32 Views2201
    Read More
  10. 액알에서 카운터 시스템을 만들어보자!

    Date2005.07.23 Category언어/기타 By한재영 Views812
    Read More
  11. RXP 메뉴/맵 배치/이벤트 설명

    Date2005.07.23 CategoryRPG Maker By『연금술사』 Views1626
    Read More
  12. 이것저것!! RM2000을 배워보자!

    Date2005.07.22 Category언어/기타 ByNelba Views869
    Read More
  13. RPG만들기2003 간단소개(

    Date2005.07.22 CategoryRPG Maker By혼돈의하늘32 Views1109
    Read More
  14. 침대를 만들어보자.

    Date2005.07.21 CategoryRPG Maker By아이디어 생산기 Views1118
    Read More
  15. 프루티룹스로 영어 듣기 평가를 만들어 봅시다...

    Date2005.07.21 Category언어/기타 By상혁군 Views740
    Read More
  16. RPG2003의맵만들기에서 제일 중요한 기능

    Date2005.07.21 CategoryRPG Maker By혼돈의하늘32 Views470
    Read More
  17. 데이터베이스 설명

    Date2005.07.17 CategoryRPG Maker By선백 Views1081
    Read More
  18. RXP DB 설명

    Date2005.07.13 CategoryRPG Maker By『연금술사』 Views1136
    Read More
  19. 허접들의 nwc 다루기 - 멜로디 쓰기

    Date2005.07.12 Category언어/기타 By예쓰™ Views1315
    Read More
  20. 액알에서의 회피율을 만들어봅시다~~~

    Date2005.07.11 Category언어/기타 Byのㅏ②뜨 Views870
    Read More
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(김원배) | 사신지(김병국)