성엽이
KKIMSSI
성엽이
전체 방문자
오늘
어제
  • 분류 전체보기 (454)
    • :) (2)
    • C프로그래밍이론 (9)
    • C++프로그래밍 (64)
      • STL (1)
    • C# (2)
    • Visual studio 10.0 (9)
    • AT91SAM7S256 (21)
    • 논리회로 (14)
    • AVR2560 (11)
    • TCPIP (16)
    • NetWork (4)
      • Ubuntu Linux (2)
    • Assembly (21)
    • UNIX 프로그래밍 (6)
    • RFID 분석 (1)
    • Win32 API (7)
    • Cortex-M3 (4)
    • Unity (91)
    • Flutter (9)
    • OwnProject (11)
      • It's mine (5)
      • 마인드스톰 실습 (1)
      • 보고서 자료 (2)
      • RPi B+ (2)
    • ETC (25)
      • 상식 (3)
    • MFC (40)
    • PostgeSQL (18)
    • 영상제어 (6)
      • VFW_영상처리 (1)
    • Python (0)
    • Java (30)
      • SpringBoot (2)
      • Javascript (1)
      • JSP (13)
      • Spring (8)
    • Oracle (4)
      • SQL (3)
    • HTML (6)
      • Thymeleaf (1)
      • CSS (1)
      • Bootstrap (3)
    • IDE (1)
      • VS Code (1)
    • Android (2)
    • Privacy Policy (0)
    • MYSQL (2)
      • MariaDB (2)
    • AWS (5)
    • 개인공부 (0)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록
  • 관리자
  • 글쓰기

공지사항

인기 글

태그

  • ARM Reverse Engineering
  • 문자열 나누기
  • MFC
  • WINAPI
  • Boot Code 분석

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
성엽이

KKIMSSI

MFC

[MFC/bitmap파일 출력하기]

2014. 1. 21. 14:14

[MFC/bitmap파일 출력하기]                      

 

// 이 함수는 Dlg 에서 버튼을 클릭하면 bitmap 출력하는 함수이다.

void CMFC_LoadImageDlg::OnClickedOutputBmp()

{

// 그래픽을 출력하기 위해서 Device Context ( 출력담당 집합체 ) 이하 DC 가 꼭 필요하다.

// API 에서는 GetDC() , ReleaseDC() 함수를 통해서 받을수 있다.

// MFC 에서는 이 함수를 포함하는 CClientDC 클래스를 제공해준다.

// API의 WM_PAINT에 대응하는 함수로 

        // MFC 에서는 BeginPaint(), EndPaint() 함수가 존재하는데, 이 함수를 포함하는 

// CPaintDC 클래스도 제공된다.


// 1. MFC 에서 Bitmap 출력을 하기위해서

// 1-1 Bitmap 이 출력될 윈도우화면의 DC 를 가져온다.

// 1-2 메모리상에 그려줄 DC 를 가져온다.

CClientDC WinDC(this);

CDC MemDC;


// 2. 윈도우화면의 DC 와 메모리상의 DC를 호환시켜준다.


MemDC.CreateCompatibleDC(&WinDC);


// 3. Bitmap 을 가져온다. ( 후에 그림그리기위한 정보도 가져온다. )


CBitmap bitmap;

BITMAP bitmapinfo;


bitmap.m_hObject = LoadImage(0, L"D:\\pic.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);

bitmap.GetBitmap(&bitmapinfo);


// 4. Bitmap 정보를 읽어왔으므로 DC 에다가 Bitmap 정보를 맞춰준다.(선택) 

// 4-1 그리고 이전 정보로 반환해줘야하기 때문에 

// SelectObject 함수의 반환값은 기억해 두었다가, 작업이 끝난 후 복원을 시킨다.

CBitmap *pOldBitmap = (CBitmap *)MemDC.SelectObject(&bitmap);


// 5. Bitmap 을 출력한다.


WinDC.BitBlt(100, 100, bitmapinfo.bmWidth, bitmapinfo.bmHeight, &MemDC, 0, 0, SRCCOPY);

// int x, int y 는 논리적 좌표값

// int nWidth, int nHeight 는 bitmap의 크기

// CDC *pSrcDC Bitmap 을 저장하고 있는 메모리DC의 시작점, 즉 bitmap 데이터

// int xSrc, int ySrc 복사될 bitmap의 좌측상단좌표, 이 값들이 0 일 경우 전체 bitmap 이 복사된다.

// wROP:ROP코드, 즉 브러쉬와 복사원, 복사처의 비트맵 색상이 논리 연산될 방법을 지정한다. 

// SRCCOPY는 흔히 사용하는 코드이다. 기존값을 무시하고 다시 그린다는 뜻이다.

        // 6. 이전 DC 로 복원한다.


MemDC.SelectObject(pOldBitmap);

}



저작자표시 (새창열림)

'MFC' 카테고리의 다른 글

[MFC] 모달 vs 모달리스  (0) 2014.02.04
[MFC] MFC Control (도구상자, 컨트롤) 함수 모음 정리  (0) 2014.01.29
[MFC] 2014.01.24 더블콜론(Scope resolution operator), " :: " 을 쓰는 이유  (2) 2014.01.24
[MFC] MFC 프린터 관련 함수  (0) 2014.01.22
[MFC/스크랩] MFC 에서 DC 클래스 얻기 및 내부 구조 / CDC, CPaintDC, CClientDC, CWindowDC 사용법  (0) 2014.01.21
    'MFC' 카테고리의 다른 글
    • [MFC] MFC Control (도구상자, 컨트롤) 함수 모음 정리
    • [MFC] 2014.01.24 더블콜론(Scope resolution operator), " :: " 을 쓰는 이유
    • [MFC] MFC 프린터 관련 함수
    • [MFC/스크랩] MFC 에서 DC 클래스 얻기 및 내부 구조 / CDC, CPaintDC, CClientDC, CWindowDC 사용법
    성엽이
    성엽이

    티스토리툴바