[ Rato iks de @ 16.09.2011. 17:03 ] @
Imam problem sa prikazivanjem bitmape. Prikazujem bitmapu iz resursa. Kreirao sam klasu Bitmap i postavio pokazivač na nju. Code: Bitmap *Pozadina1 //kreiram pozadinu preko konstruktora Pozadina1 = new Bitmap(hDC, IDB_POZADINA1, hInstance); //u metodi Delete pobrisem ovu pozadinu delete Pozadina1; //u metodi Draw treba da iscrtam tu bitmapu Pozadina1->Draw(hDC, 0, 0); E sad je Pozadina1 pristupila metodama Draw, gdje Draw sadrzi u sebi metodu DrawPart. Code: void Bitmap::Draw(HDC hDC, int x, int y, BOOL bTrans, COLORREF crTransColor) { DrawPart(hDC, x, y, 0, 0, GetWidth(), GetHeight(), bTrans, crTransColor); } void Bitmap::DrawPart(HDC hDC, int x, int y, int xPart, int yPart, int wPart, int hPart, BOOL bTrans, COLORREF crTransColor) { if (m_hBitmap != NULL) { HDC hMemDC = CreateCompatibleDC(hDC); HBITMAP hOldBitmap = (HBITMAP)SelectObject(hMemDC, m_hBitmap); if (bTrans) TransparentBlt(hDC, x, y, wPart, hPart, hMemDC, xPart, yPart, wPart, hPart, crTransColor); else BitBlt(hDC, x, y, wPart, hPart, hMemDC, xPart, yPart, SRCCOPY); SelectObject(hMemDC, hOldBitmap); DeleteDC(hMemDC); } } U klasi Bitmap ove dvije metode su deklarisane tako sto su argumentima bTrans i crTransColor već postavljene na osnovne vrjednosti. Code: void Draw(HDC hDC, int x, int y, BOOL bTrans = FALSE, COLORREF crTransColor = RGB(255, 0, 255)); void DrawPart(HDC hDC, int x, int y, int xPart, int yPart, int wPart, int hPart, BOOL bTrans = FALSE, COLORREF crTransColor = RGB(255, 0, 255)); Takođe, iscrtavanje sprajtova radim preko ovih metoda. Zato kad iscrtavam bitmapu metodi Draw ne predajem 5 argumenata nego 3. Ne koristim Pozadinu1 kao transparentnu, i boju koju sam naveo RGB(255, 0, 255) ću koristiti kao transparentnu boju kad budem iscrtavao sprajtove. Samo kad iscrtavam sprajt ja posaljem TRUE varijabli bTrans umjesto FALSE. Sve se kompajlira, nema errora ni upozorenja ali pozadina crna. Sprajtovi se prikazuju kako i treba ali na crnoj pozadini. Unaprijed HVALA ;) |