수안이의 컴퓨터 연구실

  • Mainpage
  • About Me
  • Tags
  • Metapage
  • Notice
  • Location
  • Keywords
  • Guestbook
  • Admin
  • Write an Article
  • Total | 1620991
  • Today | 371
  • Yesterday | 482

1 Articles, Search for 'DirectDraw'

  1. 2007/03/01 DirectDraw에서 256색 Bitmap 간편히 사용하기
Programming/MFC2007/03/01 18:44

DirectDraw에서 256색 Bitmap 간편히 사용하기

원본 : http://www.debuglab.com/knowledge/directdraw256.html

1.요약

256색 Bitmap을 DirectDraw의 Blt()할때 간편히 사용하는 방법에 대해서 알아보겠습니다.


2.본문

DirectDraw에서 256색 Bitmap을 사용하여 블리트 시키는 경우, System DisplayMode의 Bit수(8Bit, 16Bit...)에 따라 여러가지의 처리를 해주어야 이미지가 깨지지 않습니다. 그리고 팔래트도 모두 맞추어 주어야 하지요.

이럴경우 이미지를 로드한 후 StretchDIBits()함수를 사용하여 OffScreen에 Copy한 후 BackSurface에 Blt()시키면 자동으로 이 모든 문제점들을 해결해 주기 때문에 아주 간편합니다. 물론 팔래트 처리도해줍니다. 주의할 점은 로드할 때 Pitch값을 디스플레이 모드에 맞게 설정해 주어야 합니다. 단, StretchDIBits()함수의 속도만큼 느려지는데 이것은 이미지를 Load할때 한번 뿐이므로 실제로 이미지 출력부분의 속도영향은 없습니다.


3.예제

//******* 이미지 로드 ****************** 

Image->Load(); 



//******* Copy ************************ 

m_lpDDSImg = CopyImage(&Image); 



//******* 로드한 이미지를 StretchDIBits()를 이용하여 Copy하기 

void CopyImage(CDIB *pImg); 

HDC                 hdc; 

DDSURFACEDESC2      ddsd; 

HRESULT             hr; 

LPDIRECTDRAWSURFACE7 lpdds; 



int nWidth = pImg->GetWidth();      //이미지의 가로 넓이 

int nHeight = pImg->GetHeight();    //이미지의 세로 넓이 



ddsd.dwSize = sizeof(ddsd); 

ddsd.dwFlags = DDSD_HEIGHT | DDSD_WIDTH; 



//이미지의 크기에 맞게 OffScreen만들기 

lpdds = ddCreateOffScreen(nWidth, nHeight, 0, 0); 

if(lpdds == NULL) 

return NULL; 



lpdds->Restore(); 



lpdds->GetSurfaceDesc(&ddsd); 

hr = lpdds->GetDC(&hdc);  //핸들 얻기 



if(hr == DD_OK) 

{ 

    // Copy 하기 

    StretchDIBits(hdc, 

        0,                  // dest x 

        0,                  // dest y 

        nWidth,    // dest width 

        nHeight,            // dest height 

        0,                 // src x 

        0,                 // src y 

        nWidth,    // src width 

        nHeight,    // src height 

        pDibSpr->m_pBits,  //bits 

        pDibSpr->m_pBmpInfo, 

        DIB_RGB_COLORS,    // options 

        SRCCOPY);    // rop 

    

    lpdds->ReleaseDC(hdc); 

} 



//************** offscreen을 BackSurface에 Blt()시키기 ***** 

if(FAILED(m_lpBackSurface->Blt(&rDest, m_lpDDSImage, 

   &rSrc, DDBLT_WAIT|DDBLT_KEYSRC, NULL);   

return FALSE; 



- 2001.08.13 Smile Seo -
"MFC" 카테고리의 다른 글
  • 특정 Registry Key안의 Value값 가져오기 (0)2007/03/01
  • 프로그램안에서 Registry 이름 지정하기 (0)2007/03/01
  • DirectDraw에서 256색 Bitmap 간편히 사용하기 (0)2007/03/01
  • 메모리 DC 사용하기 (0)2007/03/01
  • 일반적인 윈도우 소멸 순서 (0)2007/03/01
2007/03/01 18:44 2007/03/01 18:44
Posted by webdizen
Tags DirectDraw
No Trackback No Comment

Trackback URL : http://www.webdizen.net/blog/trackback/2654

Leave your greetings.

[로그인][오픈아이디란?]

«Prev  1  Next»

RSS HanRSS
Blog Image
webdizen
이 곳은 컴퓨터에 대해 연구하고, 공유하고, 소통하기 위한 연구실입니다. 개인적으로는 OLAP, Data Mining, Semantic Web, Data Modeling에 대해서 연구하고 있습니다.

Categories

전체 (2998)
Webdizen (134)
Life (6)
Diary (16)
Blog (9)
IDEA (1)
Travel (10)
Book (14)
Photo (7)
Movie (7)
Music (13)
Leisure Sports (10)
Funny (5)
Hardware (119)
Software (120)
Windows (5)
Unix & Linux (119)
Installation (4)
Kernel (10)
System (34)
Develop (22)
X-Window (0)
Applicaton (31)
Security (4)
Framework (2)
Hadoop (2)
Programming (805)
Algorithm & Data Structure (1)
Assembly (38)
UNIX/Linux C (95)
C++ (128)
STL (4)
Java (38)
Win32 API (92)
ATL/COM (44)
MFC (151)
.NET (26)
WCF/WPF (4)
C# (28)
Network Programming (17)
Database Programming (12)
OpenGL / DirectX (13)
Multimedia Programming (0)
Game Programming (21)
Parallel Distributed Progra... (0)
Reverse Engineering (0)
Debugging (9)
Python (1)
Ruby (1)
Ruby on Rails (1)
QT (4)
GTK (0)
JSP (0)
PHP (6)
ASP.NET (6)
ASP (3)
Development (28)
Useful Library (2)
Data Modeling (0)
Database (105)
Oracle (4)
MSSQL (41)
MySQL (2)
Data Warehouse (2)
Data Mining (3)
Network (66)
Web (78)
DHTML (4)
XHTML (1)
Javascript (1)
CSS (1)
AJAX (9)
XML (11)
Flex (1)
Silverlight (3)
Security (91)
DoS (1)
Kernel (10)
Scanning (3)
Sniffing (0)
Spoofing (4)
Overflow (28)
Web (11)
Shell (10)
Format String (14)
Window (2)
Embedded (70)
Multimedia (27)
Mobile (14)
Graphic (24)
Management (633)
Knowledge (581)
Hadoop (0)

Notice

  • 메타 블로그 사이트에 등록
  • 새해 맞이 블로그의 변화
  • 블로그 명칭 변경
  • 도메인(www.webdizen.net) 구...
  • TEXTCUBE 1.6.1로 업그레이드...

Tags

  • evoCore
  • WinAPI
  • 중앙도서관
  • Ansi
  • 소망
  • 야후
  • 세션빈
  • 엠파스
  • Database
  • VB.NET
  • 홍보동영상
  • Web2.0
  • 메인 프레임 윈도우
  • ATL
  • Dropdown
  • WM_COPYDATA
  • 보안 결함
  • 에어론 의자
  • Database Server
  • LESS JOIN

Recent Articles

  • ASCII Code의 CRLF 제거 방법.
  • Hadoop 에서 c++ API 이용시....
  • Ubuntu Linux에서 Hadoop 구....
  • 내 심장을 한껏 뛰게한 "국가....
  • 스타 스키마 데이터베이스 설....

Recent Comments

  • ■ 온라인카지노 ▶ http://L....
    asdf 11/21
  • 그리고 혹시 해외여행자보험....
    kim 11/05
  • ★★실제 바다게임장과 똑같....
    asdf 11/04
  • sbsyama.co.to← 짱5000만당....
    asdf 11/04
  • ♡KicaZ??o(???) 바카라사....
    fdsf3fass 11/03

Recent Trackbacks

  • 파일 열기/저장하기 CFileDialog.
    은마군의 나태블록 02/11
  • World IT Show 2008.
    상우 :: Oranzie's BLOG 2008
  • cvs서버 설치하기.
    3인3색 2008
  • 속속 공개되는 Google Chart....
    PHP와 Web 2.0 2007
  • 마방진을 구하는 프로그램.
    Oranzie's BLOG 3 2007

Archive

  • 2009/09 (3)
  • 2009/08 (1)
  • 2009/03 (1)
  • 2009/02 (9)
  • 2009/01 (13)

Calendar

«   2009/11   »
일 월 화 수 목 금 토
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

Bookmarks

    • Administration
      • IIS.NET
      • NTFAQ
      • OS의 모든 것
      • 리눅스포털
    • Database
      • SQL Server Central
      • SQL Team
    • Development
      • .NET Heaven
      • ASP Alliance
      • ASP.NET 2.0
      • Bullog.net
      • C# Corner
      • C++ (C PlusPlus.com)
      • C++ Reference
      • CodeGuru
      • CodePlex
      • DebugLab
      • Dev Articles
      • Devpia
      • DotNet Junkies
      • DotNet Zone
      • Driver Online
      • GOSU.NET
      • HOONS 닷넷
      • Joinc 팀블로그
      • KOSR
      • MSDN Home Page
      • OSR Online
      • Sky.ph - 개발자 커뮤니...
      • TAEYO.NET
      • The Code Project
      • WindowsClient.net
      • 김상욱의 개발자 Side
      • 조인시 위키
    • Human Networks
      • belief21c's e-space
      • I think I can
      • Invisible Rover's Blog :D
      • Rodman®
      • ■ Feel So Good~! ■
      • 까만 나비
      • 나를 가꾸는 시간.
      • 나만의 즐거움~~!
      • 단녕
      • 상우 :: Oranzie's BLOG
    • Information Technology
      • Microsoft TechNet
      • 지디넷코리아 - 글로벌...
    • Security
      • FoundStone
      • milw0rm
      • NewOrder
      • OpenRCE
      • Phrack.org
      • Reverse Engineering b1...
      • Reverse Engineering Team
      • RootKit
      • SecurityFocus
      • SecurityXploded by Nag...
      • Wow Hacker
      • Zone-H
Textcube
Louice Studio Inc.
Powered by Textcube. Original designed by Tistory.