Dzień dobry. Przepraszam jeśli zamieściłem temat w złym dziale, ale ten wydaje się odpowiedni. Próbuję zrobić prosty program na wzór painta, jednak mam pewien problem. Chcę stworzyć bitmapę, która przechowuje rysunek, a następne przy ponownym rysowaniu wyświetla ją i dodaje kolejny element. Nie wiem dlaczego, ale funkcja CreateCompatibleBitmap() tworzy mi czarny prostokąt i jednocześnie zwraca true. Wydaje mi się, że reszta kodu jest poprawna. Kiedy pobieram obrazek z pliku wyświetla się prawidłowo. Czy wie ktoś, dlaczego tak się dzieje?
void CPaintView::OnDraw(CDC* pDC)
{
CPaintDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
obiekty = pDoc->dajObiekty();
if (obiekty.size() >= 1)
{
// tutaj trzeba odtworzyc kopie ekranu
CDC pMemDC;
BITMAP wymiaryBIT;
bitmapa->GetBitmap(&wymiaryBIT);
pMemDC.CreateCompatibleDC(pDC);
pMemDC.SelectObject(bitmapa);
pDC->BitBlt(0, 0, wymiaryBIT.bmWidth, wymiaryBIT.bmHeight, &pMemDC, 0, 0, SRCCOPY);
// i dorysowac ostatni obiekt
obiekty[obiekty.size() - 1]->rysuj(pDC);
}
// tutaj trzeba stworzyc kopie ekranu
CRect wymiaryCDC;
GetClientRect(&wymiaryCDC);
bitmapa->DeleteObject();
bitmapa->CreateCompatibleBitmap(pDC, wymiaryCDC.Width(), wymiaryCDC.Height()); /// błąd
/*
CImage pngImage;
pngImage.Load(_T(".\\res\\bitmap1.bmp"));
bitmapa->Attach(pngImage.Detach());
*/
}