투명 비트 맵 표시
http://hi.baidu.com/tit_wangpeng/blog/item/1092d7d77a11aed1a144df8e.html
BOOL TransparentBlt(
HDC hdcDest, // DC
int nXOriginDest, // X
int nYOriginDest, // Y
int nWidthDest, //
int hHeightDest, //
HDC hdcSrc, // DC
int nXOriginSrc, // X
int nYOriginSrc, // Y
int nWidthSrc, //
int nHeightSrc, //
UINT crTransparent // ,COLORREF
);
투명 한 색 의 비트 맵 을 포함 하 는 그리 기 방법 은 여러 가지 가 있 습 니 다.가장 간단 한 방법 은 기 존의 함 수 를 호출 하 는 것 입 니 다.Transparent Blt 도 자신의 코드 를 통 해 Transparent Blt 와 유사 한 기능 을 실현 할 수 있 고 실현 과정 도 두 가지 형식 이 있 습 니 다.하 나 는 미리 마스크 비트 맵 을 만 드 는 것 이 고 다른 하 나 는 동적 으로 마스크 비트 맵 을 만 드 는 것 입 니 다.본 고 는 동적 으로 마스크 비트 맵 을 생 성하 여 투명 한 영역 비트 맵 을 그 리 는 방법 을 소개 할 것 이다.
1.Transparent Blt 함수 의 사용
Transparent Blt 함 수 는 윈도 98/윈도 2000 이상 버 전에 서 실 행 됩 니 다.시스템 에 Msimg32.dll 이 포함 되 어 있어 야 합 니 다.사용 시 Msimg32.lib 를 연결 할 수 있 습 니 다.
윈도 98 의 Transparent Blt 는 자원 유출 이 발생 하기 때문에 WIN 98 에서 이 함 수 를 사용 하 는 것 을 권장 하지 않 습 니 다.
TransparentBlt 함수 원형 은 다음 과 같 습 니 다.
使用示例:
CBitmap FootballBMP; FootballBMP.LoadBitmap(IDB_FOOTBALLBMP); CDC ImageDC; ImageDC.CreateCompatibleDC(pDC); CBitmap *pOldImageBMP = ImageDC.SelectObject(&FootballBMP); TransparentBlt(pDC->m_hDC, 0, 0, 218, 199, ImageDC.m_hDC, 0, 0, 218, 199, RGB(0,0,0xff)); ImageDC.SelectObject(pOldImageBMP);
2.투명 성 Blt 함수 실현
투명 한 색 비트 맵 을 그 리 는 과정 을 이해 하기 위해 투명 한 색 비트 맵 기능 과 일치 하 는 실험 함 수 를 직접 만들어 투명 한 색 비트 맵 2 라 고 합 니 다.
실험 소재:두 장의 비트 맵 이 있 습 니 다.bk.bmp 는 배경 비트 맵 입 니 다.football.bmp 는 투명 구역 을 포함 하고 투명 색 은 파란색 RGB(0,0,0xff)입 니 다.
실험 목적:bk.bmp 를 배경 으로 football.bmp 를 배경 으로 다음 과 같은 최종 효과 도 를 형성 합 니 다.
2.1 투명 비트 맵 그리 기 원리
football.bmp->HBITMAP hImageBMP 불 러 오기->HDC hImageDC 선택
2.1.1 축구 의 단색 마스크 비트 맵 을 생 성 하고 투명 구역 은 흰색(전체 1)이 며 불투명 구역 은 검은색(전체 0)이다.
4.567913.이렇게 축구 비트 맵 에서 파란색 구역 은 마스크 비트 맵 에서 흰색 이 되 었 고 다른 구역 은 검은색 이 되 었 다.이때 hMaskBMP 는 다음 과 같다.
(그림 1)
2.1.2 배경 색 은 검은색 이 고 전경 색 은 흰색 이 며 마스크 비트 맵(그림 1)과 축구 비트 맵 을'와'로 설정 합 니 다.
이렇게 마스크 비트 맵 의 배경 색(검은색)구역 은 hImageBMP 에서 보존 되 고 전경 색(흰색)부분 은 검은색 으로 변 합 니 다.이때 hImageBMP 는 다음 그림 과 같 습 니 다.HBITMAP hMaskBMP = CreateBitmap(nWidthDest, nHeightDest, 1, 1, NULL); // SetBkColor(hImageDC, RGB(0,0,0xff)); // BitBlt(hMaskDC, 0, 0, nWidthDest, nHeightDest, hImageDC, 0, 0, SRCCOPY); // hMaskDC
(그림 2)
2.1.3 배경 색 을 흰색 으로 설정 하고 전경 색 을 검은색 으로 설정 하 며 마스크 비트 맵(그림 1)과 배경 을'와'연산 합 니 다.
4.567913.마스크 에서 흰색 구역(데이터 와 1 의'결과 가 변 하지 않 음)은 배경 을 변 하지 않 게 하고 검은색 구역 은 검은색 으로 변 합 니 다.이때 배경 은 다음 과 같 습 니 다.
(그림 3)
2.1.4 hImageBMP(그림 2)와 배경(그림 3)을'또는'연산
이렇게 해서 축 구 를 배경 에 그 렸 다.
2.2 TransparentBlt 2 함수 구현 코드
SetBkColor(hImageDC, RGB(0,0,0)); SetTextColor(hImageDC, RGB(255,255,255)); BitBlt(hImageDC, 0, 0, nWidthDest, nHeightDest, hMaskDC, 0, 0, SRCAND);
설명:본 고 에서 제공 하 는 Transparent Blt 2 함 수 는 투명 비트 맵 의 디 스 플레이 원 리 를 설명 하 는 데 목적 을 두 고 있 으 며,윈도 2000 이상 환경 실제 운용 에서 기 존의 Transparent Blt 함 수 를 사용 하여 투명 비트 맵 을 그 리 는 것 을 권장 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.