BITMAP' in 'HGDIOBJ' nicht möglich

hury

Erfahrenes Mitglied
Hi,

ich will über die Pixel eines BITMAP iterieren, dafür brauche ich es im DC:

Code:
	HDC hDC = GetDC( NULL ) ;
	HDC bmpDC = CreateCompatibleDC(hDC);

	SelectObject(bmpDC, bmp); 
	cout << "Pixel: " << GetPixel(bmpDC, 1, 1) << "\n";
	cout << "Pixel: " << GetPixel(bmpDC, 1, 1) << "\n";

Ich bekomme aber den Fehler:
Code:
error C2664: 'SelectObject': Konvertierung des Parameters 2 von 'BITMAP' in 'HGDIOBJ' nicht möglich
        Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werden

Hat jemand einen Tipp für mich?

Gruß
Alex
 
Für die Verwendung mit SelectObject benötigst du ein HBITMAP - Objekt.
Wo soll das Bitmap überhaupt herkommen? Willst du es aus einer Datei laden oder ein neues erzeugen?

Gruß
MCoder
 
Zuletzt bearbeitet:
Hi,

hier ist der ganze Codeabschnitt:

Code:
	//ICON auslesen
	ExtractIconEx((LPCTSTR)"c:\\file.bmp", 0, &hIconLarge, NULL, 1);
	GetIconInfo(hIconLarge, &IconInfo);  
	GetObject ( IconInfo.hbmColor, sizeof(BITMAP), &bmp ) ;
	
	cout << "Number of extractable icons: " << ExtractIconEx((LPCTSTR)"c:\\file.bmp", -1, NULL, NULL, 1) << "\n";

	cout << "Hoehe: " << bmp.bmHeight <<  "\n";
	cout << "BitsPixel: " << bmp.bmBitsPixel << "\n";
	cout << "Bits: "<< bmp.bmBits << "\n";
	cout << "Type: "<< bmp.bmType << "\n";	

	HDC hDC = GetDC( NULL ) ;

	HDC bmpDC = CreateCompatibleDC(hDC);
	HDC memDC = CreateCompatibleDC(hDC);
	
	  
    HBITMAP memBM = CreateCompatibleBitmap ( hDC, 32, 32 );
    SelectObject ( memDC, memBM );

	cout << "Pixel: " << GetPixel(bmpDC, 0, 1) << "\n";
	cout << "Pixel: " << GetPixel(bmpDC, 1, 2) << "\n";

Ich möchte das ICON aus einer Datei extrahieren (das funktioniert auch soweit, ICONINFO bekommt die Daten) und dann auf die einzelnen Pixel davon zugreifen.

Hast Du eine Idee, wie man das lösen könnte?

Gruß
Alex
 
Müsste so funktionieren:
C++:
ExtractIconEx((LPCTSTR)"c:\\file.bmp", 0, &hIconLarge, NULL, 1);
GetIconInfo(hIconLarge, &IconInfo);  

HDC     memDC  = CreateCompatibleDC(hDC);
HBITMAP hbmOld = SelectObject(memDC, IconInfo.hbmColor)

cout << "Pixel: " << GetPixel(memDC, 0, 1) << "\n";
cout << "Pixel: " << GetPixel(memDC, 1, 2) << "\n";

SelectObject(hbmOld);
Gruß
MCoder
 
Zurück