VC++ MFC - przezroczysta bitmapa.

0

Witam.

CClientDC dc(this);	



CString szFilename("obrazek.bmp");
   HBITMAP hBmp = (HBITMAP)::LoadImage(NULL,szFilename,
                             IMAGE_BITMAP,0,0,
                             LR_LOADFROMFILE|LR_CREATEDIBSECTION);

   CBitmap bmp;
   bmp.Attach(hBmp);

  
   CDC bmDC;
   bmDC.CreateCompatibleDC(&dc);
   CBitmap *pOldbmp = bmDC.SelectObject(&bmp);

   BITMAP  bi;
   bmp.GetBitmap(&bi);



   dc.BitBlt(xp1,yp1,bi.bmWidth,bi.bmHeight,&bmDC,0,0,SRCCOPY);

w pliku bmp znajduje się kulka. Chciałbym aby było widać tylko kulkę, a nie "kulkę w kwadracie".
W jaki sposób najłatwiej to zrobić? Bo szukałem w Internecie ale przykłady są do Winapi a w tym przypadku przerobić tego nie umiem ;-)

0

Użyj TransparentBlt zamiast BitBlt. Tylko ostatni parametr zmienia się na COLORREF.

0

Nie za bardzo to działa..

dc.TransparentBlt(xp1,yp1=yp1,bi.bmWidth,bi.bmHeight,&bmDC,0,0,RGB (120, 120, 120));
 error C2039: 'TransparentBlt' : is not a member of 'CClientDC'
0

Może zbyt szybko odpisałeś, opis błędu mówi za siebie.

Header: Declared in Wingdi.h; include Windows.h.
Library: Use Msimg32.lib

TransparentBlt((HDC)dc, ...
0

Tzn jak mam to zapisać? Bo jeśli chodzi Ci o

TransparentBlt(dc, xp1,yp1=yp1,bi.bmWidth,bi.bmHeight,&bmDC,0,0,RGB (120, 120, 120));

To:

TransparentBlt' : function does not take 9 parameters.

TransparentBlt obsługuje chyba 11 parametrów

1 użytkowników online, w tym zalogowanych: 0, gości: 1