D
hi,
hab da n rieeesen problem, und zwar zeichne ich auf nem CImage-DeviceContext und muss regelmäßig einen kleinen teil neu zeichnen.
also ich bewege quasi eine figur ueber dieses bild, und muss nun verhinder das das ding spuren hinter sich herzieht .. also:
- wenn bild vorhanden, an alter position einfügen
- neuen bildausschnitt an künftiger position kopieren
- figur an neue position zeichnen
und das so alle 50ms ... aber das problem ist, das er beim kopiern wohl irgendwas verhaut oder so, hab da schon diverse tutorials ausm netz probiert, aber es funzt einfach nicht, hier mal der wichtige teil
void CDrawInterface2D::loadRobot(int ID, int style, CVector pos){
CDC memDC; //temp speicher
memDC.CreateCompatibleDC(mDC); //mDC = pointer auf CImage-DC
BITMAP bmRobot;
//Eckkoordinaten des Roboters
CVector bottomright = pos + (CVector(ROBOTSIZE,ROBOTSIZE).scaled(0.5));
CVector topleft = pos - (CVector(ROBOTSIZE,ROBOTSIZE).scaled(0.5));
CPoint ptl = mGDIWrapper->WorldToPixel(topleft);
CPoint pbr = mGDIWrapper->WorldToPixel(bottomright);
//Breite und Hoehe des Roboters
int height = pbr.y - ptl.y;
int width = pbr.x - ptl.x;
if (ID > 0){
//altes Bild einsetzen
if (mDrawnOnce){
memDC.SelectObject(&clrRobot[ID-1]);
mDC->StretchBlt(ptl.x,ptl.y,width,height,mDC,0,0,30,30,SRCCOPY);
}//if
//neues Bild kopiern
memDC.SelectObject(&clrRobot[ID-1]);
memDC.StretchBlt(0,0,30,30,mDC,ptl.x,ptl.y,width,height,SRCCOPY);
//Roboter laden
switch (style){
case 0: picture[16].GetObject(sizeof(bmRobot),&bmRobot);
memDC.SelectObject(&picture[16]);
break;
case 1: picture[17].GetObject(sizeof(bmRobot),&bmRobot);
memDC.SelectObject(&picture[17]);
break;
case 2: picture[18].GetObject(sizeof(bmRobot),&bmRobot);
memDC.SelectObject(&picture[18]);
break;
case 3: picture[19].GetObject(sizeof(bmRobot),&bmRobot);
memDC.SelectObject(&picture[19]);
break;
}//switch
mDC->StretchBlt(ptl.x,ptl.y,width,height,&memDC,0,0,
bmRobot.bmWidth,bmRobot.bmHeight,SRCCOPY);
}//if
}//loadRobot
clrRobot definiert als -> CBitmap clrRobot[20]; da sollen regelmäßig abhängig von der ID welche in der methode uebergeben wird neue ausschnitte rein.
also die roboter ham ne ID und die robos werden eben alle 50ms gemalt.
nu is eben das prob das der immer noch eine spur zieht, und nix kopiert und einfügt und dergleichen.
hoffe mir kann einer helfen