mfc cimage 예제

나는 전체적으로 정말 간단한 PNG MFC 예를 위해 그물을 검색했다. 그러나 내가 찾은 것은 키워드보다 더 많은 전처리기 지시문을 포함하는 C 파일이었습니다. 전처리기 지시문을 좋아하지 않으므로 이 예제를 작성했습니다. 그것은 전체 물건을 할 하나의 클래스를 사용합니다. 픽셀당 8비트 미만의 형식의 경우 이 메서드는 픽셀을 포함하는 바이트의 주소를 반환합니다. 예를 들어 이미지 형식에 픽셀당 4비트가 있는 경우 GetPixelAddress는 바이트의 첫 번째 픽셀 의 주소를 반환하고 바이트당 2픽셀씩 계산해야 합니다. 이전 문서에서는 Direct2D MFC 지원을 사용하여 PNG 리소스에서 이미지를 로드하는 것이 얼마나 쉬운지 보여 줍니다. PNG 형식 파일 및 리소스에서 이미지를로드 할 수있는 방법으로 CBitmap을 확장하는 CPngImage 클래스와 같은 더 쉬운 방법을 발견했습니다. 다음은 간단한 예입니다: aguidFileType 문자열의 파일 형식 중 하나에 해당하는 각 요소와 GUID의 배열입니다. 아래 pszAllFilesDescription의 예에서 aguidFileTypes[0]은 GUID_NULL이며 나머지 배열 값은 현재 운영 체제에서 지원하는 이미지 파일 형식입니다. 다음 예제에서는 16비트를 사용하여 각 픽셀을 인코딩하는 100×100 픽셀 비트맵을 만듭니다. 지정된 16비트 픽셀에서 비트 0-3은 빨간색 구성 요소를 인코딩하고 비트 4-7은 녹색을 인코딩하고 비트 8-11은 파란색을 인코딩합니다.

나머지 4비트는 사용되지 않습니다. 여기서 `|`는 chsparator가 지정한 구분 기호 문자입니다. 예: CImage는 Win32 및 GDI+ 기능의 조합을 래핑합니다. 이 컨텍스트에서 내 사용은 저장 메서드에 대 한 엄격 하 게. CImage::Save 메서드는 기본적으로 Gdiplus::Bitmap:Save 메서드를 래핑합니다. 또한 Gdiplus::GetImageEncoder (및 종속 메서드)를 활용하여 올바른 인코더를 가져옵니다. http://www.codeguru.com/cpp/g-m/gdi/gdi/article.php/c3661/ 직접 (즉, ATL없이) GDI +를 사용하여 파일에 비트 맵을 저장하는 좋은 예가있습니다. cimage 를 이미지화하여 응용 프로그램이 투명한 비트맵을 지원하는지 여부를 나타냅니다.

당신이 나에게 줄 수있는 모든 정보를 미리 감사하고 초기 응답 주셔서 감사합니다. 한 번에 하나의 비트맵만 장치 컨텍스트로 선택할 수 있으므로 GetDC에 대한 각 호출에 대해 ReleaseDC를 호출해야 합니다. 이것은 MFC에 PNG 파일을 표시하는 매우 간단한 샘플 코드 접근 방식입니다. 두 개의 공통 라이브러리는 zlib 및 libpng와 같은 필요한 기능을 제공합니다. 이러한 라이브러리는 소스 파일에 포함됩니다. 이 메서드는 DIB 섹션 비트맵만 지원합니다. 따라서 DIB 섹션의 픽셀과 동일한 방식으로 CImage 개체의 픽셀에 액세스합니다. 반환된 포인터는 위치(0, 0)의 픽셀을 가리킵니다. n높이 CImage 비트맵의 높이를 픽셀 단위로 합니다. nHeight가 양수이면 비트맵은 상향식 DIB이고 원점은 왼쪽 아래 모서리입니다. nHeight가 음수이면 비트맵은 하향식 DIB이고 원점은 왼쪽 위 모서리입니다. 지정된 이름과 유형을 사용하여 이미지를 저장하려면 이 함수를 호출합니다.

guidFileType 매개 변수가 포함되지 않은 경우 파일 이름의 파일 확장명을 사용하여 이미지 형식을 결정합니다. 확장이 제공되지 않으면 이미지가 BMP 형식으로 저장됩니다.

This entry was posted in Uncategorized. Bookmark the permalink.

Comments are closed.