002
02.10.2006, 12:37 Uhr
~Monk
Gast
|
| Zitat von mischa: |
hi ich mach mich grad an eine einfache animation ran-ein springender Ball- denn Ball male ich mit der GDI funktion Ellipse. das funktioniert auch, der ball springt auch und so.In den Hintergrund hab ich ein Bitmap reingesetzt zu verschönerung aber der flimmert schrecklich. hier im forum hat man mir double bufering empfolen aber ich blick da net durch. im internet hab ich den code gefunden
| C++: |
HDC hdc = BeginPaint(); HDC hdcMem = CreateCompatibleDC(hdc); HBITMAP hBM = CreateCompatibleBitmap(hdc, cxClient, cyClient); SelectObject(hdcMem, hBM);
// Zeichenoperationen auf hdcMem
BitBlt(hDC, 0, 0, cxClient, cyClient, hdcMem, 0, 0, SRCCOPY); DeleteObject(hBM); DeleteDC(hdcMem);
|
daraus hab ich dann für mich den code gemacht
| C++: |
hdc=BeginPaint(hwnd,&ps); hdcMem=CreateCompatibleDC(hdc); hBM=CreateCompatibleBitmap(hdc,cxClient,cyClient); SelectObject(hdcMem,hBM);
hdcMem2=CreateCompatibleDC(hdc); SelectObject(hdcMem2,hBitmap[1]); //hBitmap[1] ist der Hintergrund BitBlt(hdcMem,90,50,cxSource[1],cySource[1],hdcMem,0,0,SRCCOPY);
BitBlt(hdc,0,0,cxClient, cyClient,hdcMem,0,0,SRCCOPY); DeleteObject(hBM); DeleteDC(hdcMem); DeleteDC(hdcMem2); EndPaint(hwnd,&ps);
|
aber das läuft noch schlimmer kann mir jemand vielleicht ein funktionierendes Beispiel geben oder sagen was ich falsch mache
|
Schau dir nochmal das Beispiel an das du verlink hast:
Dort hast du nur 2 Handel zu einem DC(hdc und hdcmem) - indem was du gemacht hast, hast du aber 3 Stück. (hdc, hdcmem + hdcmem2)
Hier blittest du in den selbe Context
| C++: |
BitBlt(hdcMem,90,50,cxSource[1],cySource[1],hdcMem,0,0,SRCCOPY);
|
hdcMem->hdcMem ? Ist das gewollt?
Scheint mir so, als hättest du da etwas kuddelmuddel drin?! Dieser Post wurde am 02.10.2006 um 13:17 Uhr von FloSoft editiert. |