سؤال

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); 

و// بعد CreateDIBSection لقد وجدت رمز الخطأ هو 8، أي مورد كاف.

وكيف يمكن تجنب هذا الخطأ؟ أمرر العرض: 3500 الارتفاع 2500 شكرا جزيلا!

هل كانت مفيدة؟

المحلول

وأعتقد أن الجواب على هذا هو نفس الإجابة على سؤال سابق الخاصة بك: الصور النقطية الخاصة بك الطريق كبيرة جدا

وأيضا، لأن الأبعاد الخاصة بك الآن نصف أبعاد الصورة النقطية في سؤال سابق الخاصة بك، وأنا على التخمين كنت تحاول كسر الوجهة يصل الى الأرباع، ولكن الآن لم يكن لديك ما يكفي من الموارد لخلق حتى نقطية الوجهة. وهذا قد يعني أنك أيضا لا تحرير الذاكرة نقطية من المحاولات السابقة. قد تحتاج إلى إعادة تشغيل الكمبيوتر وحاول كل هذا مرة أخرى مع كثير صور المقصد أصغر.

نصائح أخرى

وهناك ببساطة ليست ذاكرة كافية لإتمام الأمر الخاص. لا يمكنك "إصلاح" الأمر كما هو، إلا في محاولة لكسر بعض الحدود الذاكرة.

وبدلا من ذلك، تحتاج إلى تقسيم مهما كانت الصورة تعمل على التحكم في أحجام، بحيث يمكن تبديل داخل وخارج.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top