Grafik anzeigen



  • Ich möchte mit der MFC bestimmte Bitmap-Grafiken anzeigen. (das dürfte nicht das Problem sein) Aber ich möchte zudem so etwas ähnliches machen wie bei einem Ray-Tracer (oder eben einem anderen Renderer), wo das Bild Zeilenweise aufgebaut wird. Wie realisiert man so etwas?



  • meinst du sowas?

    CDC * dc = GetDC();
    
    	CBitmap bmp;
    	bmp.LoadBitmap(IDB_BITMAP1);
    
    	CDC dcMem;
    	dcMem.CreateCompatibleDC(NULL);
    
    	dcMem.SelectObject(bmp);
    
    	BITMAP bmpInfo;
    	bmp.GetBitmap(&bmpInfo);
    
    	for (int i=0;i<bmpInfo.bmHeight;i++)
    	{
    		dc->BitBlt(0,i,bmpInfo.bmWidth,1,&dcMem,0,i,SRCCOPY);
    		Sleep(10);
    	}
    


  • Ich habe ja noch keine fertige Bitmap, da sie ja zur Laufzeit erstellt wird und nun will ich, dass es dann immer in bestimmten Abständen aktualisiert wird (oder auch Pixel für Pixel)



  • newvet schrieb:

    meinst du sowas?

    CDC * dc = GetDC();
    
    	CBitmap bmp;
    	bmp.LoadBitmap(IDB_BITMAP1);
    
    	CDC dcMem;
    	dcMem.CreateCompatibleDC(NULL);
    
    	dcMem.SelectObject(bmp);
    
    	BITMAP bmpInfo;
    	bmp.GetBitmap(&bmpInfo);
    
    	for (int i=0;i<bmpInfo.bmHeight;i++)
    	{
    		dc->BitBlt(0,i,bmpInfo.bmWidth,1,&dcMem,0,i,SRCCOPY);
    		Sleep(10);
    	}
    

    Ich möchte jetzt das Bild an einer anderen Stelle darstellen.
    Dazu habe ich den Befehl dc->MoveTo (100,100) hinzugefügt.

    Bloß leider ist das Bild immer noch links oben in der Ecke...



  • for (int i=0;i<bmpInfo.bmHeight;i++)
    	{
    		dc->BitBlt(0+100,i+100,bmpInfo.bmWidth,1,&dcMem,0,i,SRCCOPY);
    		Sleep(10);
    	}
    

    So jetzt ist er verschoben;
    BitBlt(position_x,position_y,...

    MFG Sigi



  • Aha, ist ja ganz einfach. Danke!


Anmelden zum Antworten