Hi Leute,
mein Problem ist in VC++ bitmaps aus einer datei zu laden und grafikalgorithmen zur bildverbesserung und objektsegmentierung auf dieses bitmap anzuwenden.
die algorithmen sind kein problem, nur wenn ich auch nur versuche eine Linie in das bitmap zu zeichnen, wird die bitmap nicht aktualisiert.
meine bitmap ist gespeichert in einem CStatic-objet in einem dialogfeld.
ich hole die bitmap aus dem CStatic-object heraus.
danach verbinde ich den Gerätekontext mit dem bitmap und versuche eine linie zu zeichnen.
die verbindung zwischen bitmap und gerätekontext wird wieder getrennt und das bitmap in das CStatic-objekt zurückgespeichert.
Das Problem ist, das bitmap verschwindet komplett und es wird keine linie gezeichnet!!!
Kann mir jemand sagen warum?
danke.
Oliver
Quellcode:
void ProgramDlg:nButtonGreenLine()
{
BITMAP info;
CBitmap picture;
// get information about the bitmap
GetObject( m_staticBmp.GetBitmap(), sizeof(BITMAP), &info );
pciture.CreateCompatibleBitmap( GetDC(), info.bmWidth, info.bmHeight );
picture.FromHandle( m_staticBmp.GetBitmap() );
// create device context with bitmap
CDC memDC;
memDC.CreateCompatibleDC( GetDC() );
CBitmap *poldbmp = memDC.SelectObject( &picture );
// create pencil to draw a green line
CPen newpen;
newpen.CreatePen( PS_SOLID, 30, RGB( 0, 255, 0 ) );
CPen *oldpen = memDC.SelectObject( &newpen );
memDC.MoveTo( 0, 100 );
memDC.LineTo( 100, 100 );
memDC.SelectObject( oldpen );
// get the bitmap out of the device context
poldbmp = memDC.SelectObject( poldbmp );
HBITMAP hImage;
hImage = poldbmp->operator HBITMAP();
// store back the bitmap in the Staticobject
m_staticBmp.SetBitmap( hImage );
return;
}