mfc cimage 예제

Posted by on kol. 2, 2019 in Nekategorizirano | 0 comments

이전 문서에서는 Direct2D MFC 지원을 사용하여 PNG 리소스에서 이미지를 로드하는 것이 얼마나 쉬운지 보여 줍니다. PNG 형식 파일 및 리소스에서 이미지를로드 할 수있는 방법으로 CBitmap을 확장하는 CPngImage 클래스와 같은 더 쉬운 방법을 발견했습니다. 다음은 간단한 예입니다: CImage는 Win32 및 GDI+ 기능의 조합을 래핑합니다. 이 컨텍스트에서 내 사용은 저장 메서드에 대 한 엄격 하 게. CImage::Save 메서드는 기본적으로 Gdiplus::Bitmap:Save 메서드를 래핑합니다. 또한 Gdiplus::GetImageEncoder (및 종속 메서드)를 활용하여 올바른 인코더를 가져옵니다. http://www.codeguru.com/cpp/g-m/gdi/gdi/article.php/c3661/ 직접 (즉, ATL없이) GDI +를 사용하여 파일에 비트 맵을 저장하는 좋은 예가있습니다. 다음 예제에서는 16비트를 사용하여 각 픽셀을 인코딩하는 100×100 픽셀 비트맵을 만듭니다. 지정된 16비트 픽셀에서 비트 0-3은 빨간색 구성 요소를 인코딩하고 비트 4-7은 녹색을 인코딩하고 비트 8-11은 파란색을 인코딩합니다. 나머지 4비트는 사용되지 않습니다. 픽셀당 8비트 미만의 형식의 경우 이 메서드는 픽셀을 포함하는 바이트의 주소를 반환합니다. 예를 들어 이미지 형식에 픽셀당 4비트가 있는 경우 GetPixelAddress는 바이트의 첫 번째 픽셀 의 주소를 반환하고 바이트당 2픽셀씩 계산해야 합니다.

나는 전체적으로 정말 간단한 PNG MFC 예를 위해 그물을 검색했다. 그러나 내가 찾은 것은 키워드보다 더 많은 전처리기 지시문을 포함하는 C 파일이었습니다. 전처리기 지시문을 좋아하지 않으므로 이 예제를 작성했습니다. 그것은 전체 물건을 할 하나의 클래스를 사용합니다. aguidFile입력 문자열의 파일 형식 중 하나에 해당하는 각 요소가 있는 GUID의 배열입니다. 아래 pszAllFilesDescription의 예에서 aguidFileTypes[0]은 GUID_NULL이며 나머지 배열 값은 현재 운영 체제에서 지원하는 이미지 파일 형식입니다. `|`는 chSeparator에 의해 지정된 분리기 문자입니다. 예를 들어, PNG 를 하고, PNG를 하고, 이미지 상이하고, 이미지에 따라, u012513234 .

지정된 이름과 유형을 사용하여 이미지를 저장하려면 이 함수를 호출합니다. guidFileType 매개 변수가 포함되지 않은 경우 파일 이름의 파일 확장명을 사용하여 이미지 형식을 결정합니다. 확장이 제공되지 않으면 이미지가 BMP 형식으로 저장됩니다. hDestDC 실행 되고자 리소스가 포함된 모듈의 핸들입니다. 픽셀 좌표가 선택한 클리핑 영역 외부에 있는 경우 이 메서드가 실패합니다. 비트맵은 비DIB 섹션 비트맵 또는 DIB 섹션 비트맵일 수 있습니다. DIB 섹션 비트맵에서만 사용할 수 있는 메서드 목록은 IsDIBSection을 참조하십시오. 비트맵의 픽셀이 색상 팔레트에 매핑되는지 여부를 결정합니다.

픽셀 색상을 색상 팔레트의 iIndex에 있는 색상으로 설정합니다. 데모 응용 프로그램을 빌드하기 전에 이러한 대상 중 일부를 빌드해야 하며 imagedll/lib와 연결해야 합니다. CImage 개체에서 비트맵을 분리하고 비트맵을 삭제합니다. 피치는 한 비트맵 선의 시작과 다음 비트맵 선의 시작을 나타내는 두 메모리 주소 사이의 거리(바이트)입니다. 피치는 바이트 단위로 측정되므로 이미지의 피치를 사용하여 픽셀 형식을 결정하는 데 도움이 됩니다. 피치에는 비트맵에 예약된 추가 메모리도 포함될 수 있습니다. 픽셀당 비트는 일반적으로 1, 4, 8, 16, 24 또는 32입니다.