auf BMP in Picture Control zugreifen
-
Danke, nachdem ich dann nach HBITMAP gegoogelt habe, habe ich - glaube ich - den richtigen Weg gefunden. Werde es morgen direkt mal ausprobieren.
-
Bin leider keinen Schritt weiter gekommen. Wie komme ich mit dem HBITMAP an die Pixeldaten?
-
Versuch mal die Funktion GetBitmapBits. Hier ein Beispiel aus meiner Anwendung:
HBITMAP hBitmap; /*...*/ m_lSize = m_lHeight * m_lWidth; m_pMemory1 = (BYTE*)malloc(m_lSize); /*...*/ GetBitmapBits(hBitmap,m_lSize,m_pMemory1);Ich hoffe die Codeschnippsel helfen dir weiter.
Gruß charlie
-
Stichwort: CImage, CImage::Attach, CImage::SetPixel, CImage::GetPixel, usw.
Grüssli
-
Dravere schrieb:
Stichwort: CImage, CImage::Attach, CImage::SetPixel, CImage::GetPixel, usw.
Grüssli
CImage finde ich in der MFC nicht. Meinst Du damit die Klasse von codeproject.com?
-
Nö, ist eine ATL Klasse.
Solltest eigentlich in der MSDN finden.Grüssli
-
Aus historischen Gründen bin ich noch auf VC6 angewiesen. Dort scheint es CImage (noch) nicht zu geben.
-
charlie-ux schrieb:
Versuch mal die Funktion GetBitmapBits. Hier ein Beispiel aus meiner Anwendung:
HBITMAP hBitmap; /*...*/ m_lSize = m_lHeight * m_lWidth; m_pMemory1 = (BYTE*)malloc(m_lSize); /*...*/ GetBitmapBits(hBitmap,m_lSize,m_pMemory1);Ich hoffe die Codeschnippsel helfen dir weiter.
Gruß charlie
Wie komme ich denn dann an die Informationen, wieviele Bits ein Pixel hat, ob es per Palette geht oder nicht, also an die Headerinformationen?
-
Keiner ne Ahnung?????
-
Nicht wirklich, vor allem ohne CImage. Eine Möglichkeit gebe es vielleicht über einen CDC zu gehen. Ist aber ziemlich kompliziert find ich.
HBITMAP hBitmap; // Das HBITMAP, welches du vom PictureCtrl bekommst CBitmap* pBitmap = CBitmap::FromHandle(hBitmap); // Dann musst du dir irgendwie einen CDC, CClientDC oder CPaintDC erstellen. // Frag mich aber nicht genau wie, so dass du nicht in das Fenster reinzeichnest. CDC dc; // Das ist nun dein erstellter CDC oder was auch immer. CBitmap* pOldBitmap = dc.SelectObject(pBitmap); // Und nun solltest glaub ich mit GetPixel, bzw. SetPixel die RGB Farben holen, bzw. setzen können. // Aufräumen ... dc.SelectObject(pOldBitmap); // ... und löschen nicht vergessen. pBitmap->DeleteObject();Alle Angaben ohne Gewähr. So habe ich dies noch nie versucht.
Grüssli