P
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 on
abbricht und mir der Grund nicht klar ist.
Matthias