HBITMAP pixelweise auslesen



  • huhu

    ich habe ein gefülltes HBITMAP...

    wie kann ich auf die einzelnen Pixel zugreifen, sie auslesen
    und verändern?

    danke euch schonmal

    babel



  • Da musst Du einen Speicherkontext erstellen, dort die HBITMAP einsetzen und dann mit SetPixel/GetPixel arbeiten.



  • Wenn du nur wenige Pixel ändern bzw. abfragen möchtest, kannst du es in einen DC selektieren und dann mit GetPixel / SetPixel arbeiten. Ansonsten kann man sowas afaik über GetDIBits machen - habe damit aber selbst keine Erfahrung...



  • hey danke euch schonmal...
    also wenn ich jedes pixel einzelnd auslese und testweise ausgebe
    sehe ich leider nur schwarz...

    wenn ich es mit BitBlt mache sehe ich garnichts 😉 also weisser hintergrund
    bei meiner VIEW (MFC-Anwendung)

    hier mal meine OnDraw():

    void CTestView::OnDraw(CDC* pDC)
    {
    	CWebcam_testDoc* pDoc = GetDocument();
    	ASSERT_VALID(pDoc);
    
    	//pDC->TextOut(100,100,buf);
    
    	if(hBitmap!=NULL)
    	{
    		CDC *test = new CDC;
    		test->CreateCompatibleDC(pDC);
    
    		test->SelectObject(hBitmap);
    
    		pDC->BitBlt( 0, 0, 640, 480, test, 0, 0, SRCCOPY );
    
    		/*for(int i=0;i<640;i++)
    		{
    			for(int j=0;j<480;j++)
    			{
    				pDC->SetPixel(i,j,test->GetPixel(i,j));	
    			}
    		}*/
    	}
    }
    

    ist der ansatzt denn richtig?

    danke schonmal 🙂



  • was mache ich denn falsch?

    hmm :-|



  • Hmm, sieht nach MFC aus?

    Du selektierst hBitmap da ins test-DC, aber machst das anschließend nirgends wieder rückgängig? Oder muss man das bei MFC nich?


Anmelden zum Antworten