C ++ GDI + жүктеу кескіндері жады сұрауын арттырады

Кескінді жүктеу әдісі:

RESULT CChildView::OnLoadPng( WPARAM wparam, LPARAM lParam )
{
    CGdiPlusBitmapResource* pBitmap = new CGdiPlusBitmapResource;
    if (pBitmap->Load(wparam, _T("PNG")))
    {
        CClientDC dc(this);
        Gdiplus::Graphics graphics(dc);
        Gdiplus::Color white(255, 255, 255, 255);
        graphics.Clear(white);
        graphics.DrawImage(*pBitmap, 0, 0);
    }
    else
    {
        AfxMessageBox("Failure loading image");
    }
    delete pBitmap;

    return 0L;
}

Мәселе мен осы әдісті бірнеше рет деп атаймын, және әр кезде еске түсе білу әлдеқайда көп. Суреттер соңғы біреудің үстінен бірінен-бірі қабаттасып жатыр және мен мұны қаламаймын. Graphics.DrawImage-ге дейін graphics.Flush() көрдім, бірақ бұл жұмыс істемейді.

Жұмыс істейтін жалғыз нәрсе терезені бұзып тастады, бірақ кейінірек сурет сала алмадым.

Басқа бейнені жүктеу үшін graphics.DrawImage көмегімен түсірілген нені тазалау/тазалаудың қандай әдісін білесіз бе?

0
graphics.Flush (); кейін graphics.Clear (white); жұмыс істемейді?
қосылды автор karlphillip, көзі
Қолданбаңызда ағып кетпеген сияқты емес. Кем дегенде бөлісетін бастапқы кодтың бұл бөлігі. Мүмкін, сіз бізге көрсетпейтін басқа кодқа байланысты мәселе.
қосылды автор karlphillip, көзі
Қолданбаңыз көбірек жадты пайдаланатынын қалай білуге ​​болады? Мұны қалай тексердіңіз? Сіз сипаттаған нәрселерден айта аламын, терезенің кенепті тазаланбайды, бірақ бұл бәрі. Бұл сіздің өтінішіңізді еске түсіруді білдіреді деген сөз емес.
қосылды автор karlphillip, көзі
Мен оны білемін. Мен оны қалай тазарту керектігін білгім келеді. graphics.Flush() жұмыс істемейді. Сіз қалай білесіз?
қосылды автор Alberto, көзі
Ол жұмыс істемейді. Жад толып кетеді. Мен жүктемені көріп, png орнына bmp ...
қосылды автор Alberto, көзі
Мәселе барлық суреттер алдын-ала тазартылмай-ақ жүктеледі. Ешқандай ағып кетпейді, бірақ кескіндер жойылмайды, сондықтан олар еске сақталады және бағдарлама көбірек жадты пайдаланады. Бір шешімді терезеге WM_CLOSE жіберу керек, бірақ содан кейін тағы біреуді жасау керек, бұл менің қолданбамдағы проблема. Бірақ, менің ойымша, бұл жалғыз шешім: әр суретті салған кезде мен жаңа терезені жасаймын.
қосылды автор Alberto, көзі

Жауап жоқ

0