문제

BITMAPINFO bmi;
memset(&bmi,0,sizeof(BITMAPINFO));
bmi.bmiHeader.biSize            = sizeof(BITMAPINFOHEADER);
bmi.bmiHeader.biWidth           =m_pImg->GetWidth();
bmi.bmiHeader.biHeight          =m_pImg->GetHeight();
bmi.bmiHeader.biPlanes          = 1;
//if(   m_pImg->GetInfo()->biBitCount!=16)  
//{
//  bmi.bmiHeader.biBitCount    =   m_pImg->GetInfo()->biBitCount;
//}
//else 
//{
//ASSERT((m_pImg->GetInfo())->bmiHeader->biBitCount == 24);
bmi.bmiHeader.biBitCount=24;
bmi.bmiHeader.biCompression     = BI_RGB;
if (bmi.bmiHeader.biSizeImage == 0)
    bmi.bmiHeader.biSizeImage =
    WidthBytes(bmi.bmiHeader.biWidth,bmi.bmiHeader.biBitCount) * bmi.bmiHeader.biHeight;
if(bmi.bmiHeader.biClrUsed == 0 && bmi.bmiHeader.biBitCount <16)
    bmi.bmiHeader.biClrUsed=DWORD(1 <<bmi.bmiHeader.biBitCount);
m_nNewSize=bmi.bmiHeader.biSizeImage;

if(m_hbmCanvasBitmap!=NULL)
{
    DeleteObject(m_hbmCanvasBitmap);
    m_hbmCanvasBitmap=NULL;
    m_pCanvasBits=NULL;
}
//  创建直接与DC相关联的位图
m_hbmCanvasBitmap=CreateDIBSection(m_hDC, &bmi, DIB_RGB_COLORS,(void**)&m_pCanvasBits, NULL, NULL); 

// CreadIbsection 후 오류 코드가 8, 자원이 충분하지 않다는 것을 알았습니다.

이 오류를 방지하려면 어떻게 해야 합니까?너비를 전달합니다.3500 높이 2500 많은 감사합니다!

도움이 되었습니까?

해결책

이에 대한 답변은 이전 질문에 대한 답변과 동일하다고 생각합니다.당신의 비트맵은 방법 너무 큰.

또한 귀하의 크기가 이제 이전 질문에서 비트맵 크기의 절반이므로 대상을 사분면으로 나누려고 시도하고 있지만 이제 대상 비트맵을 생성할 리소스가 충분하지 않은 것 같습니다.이는 이전 시도에서 비트맵 메모리를 해제하지 않는다는 의미일 수도 있습니다.재부팅하고 다음을 사용하여 이 모든 것을 다시 시도할 수 있습니다. 많이 더 작은 대상 이미지.

다른 팁

명령을 완료하기에 메모리가 충분하지 않습니다. 메모리 경계를 끊는 것을 제외하고는 그대로 "고정"할 수 없습니다.

오히려, 당신은 당신이 작업하는 모든 이미지를 관리 가능한 크기로 나누어야하므로 교체 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top