Bitmap speichern...
-
Ich habe die Tage schonmal versucht eine Loesung fuer mein Problem zu bekommen, aber niemand ist etwas dazu eingefallen.
Ich schreibe gerade an einem Programm das zur Auswertung von Versuchsdaten Bitmaps manipulieren soll.
1.) Das Programm soll die Bitmap darstellen...
2.) Der User soll die Moeglichkeit haben die Bitamp zu beschneiden...
3.) Der beschnittene Teil soll vom Programm ausgewertet werde...Punkt 1 und 3 stehen soweit, aber das Beschneiden der Bmp Datei macht mir Probleme... Ich kann mir ueber den BitBlt-Befehl einen Ausschschnitt der Datei anzeigen lassen... Genau diesen Ausschnitt moechte ich in einer Datei test.bmp speichern - diese wird dann im folgenden von den dafuer zustaendigen Routinen analysiert.
Wie mache ich das mit dem Speichern der Datei ?
Ich verwende das Grundgeruest einer MFC besierten SDI Anwendung mit Doc/View-Trennung...
Meine Funktion zur Darstellung der Bmp ist die folgendevoid CDispBmpView::OnDraw(CDC* pDC) { CDispBmpDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); BITMAP BitmapParam; HBITMAP hBitmap; hBitmap = pDoc->GetBitmap(); if (hBitmap == 0) return; CDC* pMemDC = new CDC; BOOL bRetCode = pMemDC->CreateCompatibleDC(pDC); ASSERT(bRetCode); CBitmap* pCBitmap = CBitmap::FromHandle(hBitmap); pMemDC->SelectObject(pCBitmap); pCBitmap->GetBitmap(&BitmapParam); TRACE (" Width= %d",BitmapParam.bmWidth); TRACE (" Height= %d",BitmapParam.bmHeight); m_H=BitmapParam.bmHeight; m_W=BitmapParam.bmWidth; // pDC->BitBlt(0,0,BitmapParam.bmWidth,BitmapParam.bmHeight,pMemDC,0,0,SRCCOPY); // pDC->BitBlt(0,0,m_W,m_H,pMemDC,0,0,SRCCOPY); if (Cut==FALSE) { TRACE (" Width View= %d",g_Width); TRACE (" Height View= %d",g_Height); pDC->BitBlt(0,0,g_OriginalWidth,g_OriginalHeight,pMemDC,0,0,SRCCOPY); } else { TRACE (" Width View Else= %d",g_Width); TRACE (" Height View Else= %d",g_Height); pDC->BitBlt(0,0,g_Width,g_Height,pMemDC,g_TLCx,g_TLCy,SRCCOPY); } delete pMemDC; }
Wenn irgendwem was dazu einfaellt waere ich sehr dankbar - ich komme da gerade echt nicht weiter
Gruesse
Helge.