본문 바로가기

Study Memos/Windows Programming

BitBlt (Section 26)

참고> blog.naver.com/tipsware/220994341959

 

 

1. 응용 프로그램은 대부분 "장치 종속적인 비트맵(DDB)" 을 사용.
-> 개발자가 비트맵 복사 시 이런 장치 종속적인 문제를 고민하지 않도록 Windows 운영체제는 "BitBlt"라는 비트맵 복사 함수를 제공

2. 개발자가 직접 비트맵에 접근해서 복사를 시도하면...
-> DC에 연결된 비트맵 객체와 그림이 복사될 비트맵 객체의 색상 수가 일치하지 않으면 색상 수를 변환하는 작업을 직접 해야 함.
ex) DC에 연결된 비트맵은 32비트 색상, 그림이 복사될 비트맵은 16비트 색상
-> DC에 연결된 비트맵 객체의 폭과 높이가 복사될 비트맵 객체의 폭과 높이와 일치하지 않으면 그림의 '비트 패턴'이 엉망이 되기 때문에 이를 보정해주는 작업을 직접 해야 함
-> 윈도우의 캡션 영역까지 모두 포함된 그림을 가져옴. 이를 처리하기 위한 별도의 작업을 해주어야 함.
-> 화면용 DC에 연결된 비트맵 객체는 비트맵의 기본 정보인 폭, 높이 같은 정보는 얻을 수 있지만 GetBitmapBits 함수로 '비트 패턴'을 얻을 수는 없음.
ex) ::GetDC(NULL) 로 얻은 DC는 GetBitmapBits() 함수를 실행할 때 실패함.

3. BitBlt 함수 
-> GDI 기술의 근본 취지 상 개발자가 직접 비트맵에 접근하여 복사하지 않도록 해주는 함수
-> DC와 DC간에 그림을 복사하는 함수
-> dwRop 매개 변수를 통해 그림을 복사하는 과정에서 특별한 연산을 수행할 수 있음. (카메라 필터 역할)

반응형

'Study Memos > Windows Programming' 카테고리의 다른 글

윈도우 좌표 구성 (Section 28)  (0) 2020.09.18
CreateCompatibleDC (Section 27)  (0) 2020.09.16
WM_CREATE (Section 25)  (0) 2020.09.16
WM_PAINT(Section 24)  (0) 2020.09.15
사각형 그리기 (Section 23)  (0) 2020.09.15