Inhalt von CStatic als Bitmap abspeichern
-
Ich habe eine Cstatic Klasse abgleitet und zeichne ein Bild hinein über
void CGraphCtrl::OnPaint() { CPaintDC dc(this); // device context for painting CRect rc; GetClientRect(rc); CMemDC pDC(&dc, &rc); ... pDC->FillSolidRect(x,y,x+1,y+1,c); ... }Diesen Inhalt von pDC würde ich auch gerne als Bitmap abspeichern können.
Wie müsste ich das machen ?
Matthias
-
http://www.codeproject.com/bitmap/drawing2bitmap.asp
Auch hilfreich:
http://www.codeproject.com/clipboard/hscr2clp.asp
-
Ich habe folgenden Code den ich implementieren möchte (wurde mir so empfohlen)
void CGraphCtrl::OnPaint() { CPaintDC dc(this); // device context for painting CRect (rc); GetClientRect(rc); //CMemDC pDC(&dc,&rc); // Double Buffering CDC MemDC; MemDC.CreateCompatibleDC(&dc); Bmp.CreateCompatibleBitmap(&dc, rc.Width(), rc.Height()); CBitmap *pOldBitmap = MemDC.SelectObject(&Bmp); COLORREF c; if ((m_PixelNumberX>0) && (m_PixelNumberY > 0)) { for (int ix=0; ix < m_PixelNumberX; ix++) { for (int iy=0; iy < m_PixelNumberY; iy++) { c=PlotData[ix][iy]; //pDC->SetPixel(ix,iy,c); MemDC.SetPixel(ix,iy,c); } } } dc.BitBlt(0,0,rc.Width(),rc.Height(),&MemDC,0,0,SRCCOPY); MemDC.SelectObject(pOldBitmap); }Ich sollte damit, wenn ich es richtig verstanden habe, mit folgendem Code auch ein Bitmap speichern können:
CImage Image; Image.Attach(Bmp.Detach()); Image.Save(...);das Problem ist nur, das obige Funktion and der Stelle
CBitmap *pOldBitmap = MemDC.SelectObject(&Bmp);innerhalb von
BOOL CGdiObject::Attach(HGDIOBJ hObject) { ASSERT(m_hObject == NULL); // only attach once, detach onabbricht und mir der Grund nicht klar ist.
Matthias