Bitmap löschen



  • Hallo Leute,

    der folgenden Quellcode dient zum Ausgeben von zwei Bitmaps(wobei IDI_ICON2
    über IDI_ICON1 liegt) in einem Fenster:

    #include "stdafx.h"
    #include <stdio.h>
    #include <afxwin.h>

    class CMeinHauptfenster : public CFrameWnd {
    public:
    CMeinHauptfenster();
    protected:
    afx_msg void OnPaint();
    DECLARE_MESSAGE_MAP();

    };
    CMeinHauptfenster::CMeinHauptfenster() {
    Create(NULL, "",WS_SYSMENU, rectDefault);

    };
    void CMeinHauptfenster::OnPaint() {

    CBitmap *pMeinBild = new CBitmap;
    pMeinBild->LoadBitmap(IDI_ICON1);

    BITMAP bm;
    CPaintDC dc(this);
    CDC MeinDC;
    MeinDC.CreateCompatibleDC(NULL);
    MeinDC.SelectObject(pMeinBild);
    pMeinBild->GetObject(sizeof(bm), &bm);

    dc.BitBlt(10,10, bm.bmWidth, bm.bmHeight, &MeinDC,15,15,SRCCOPY);

    CBitmap *pMeinBild2 = new CBitmap;
    pMeinBild2->LoadBitmap(IDI_ICON2);

    BITMAP bm2;
    CPaintDC dc(this);
    CDC MeinDC2;
    MeinDC2.CreateCompatibleDC(NULL);
    MeinDC2.SelectObject(pMeinBild2);
    pMeinBild2->GetObject(sizeof(bm), &bm);

    dc.BitBlt(10,10, bm.bmWidth, bm.bmHeight, &MeinDC2,15,15,SRCCOPY);
    }
    BEGIN_MESSAGE_MAP(CMeinHauptfenster,CFrameWnd)
    ON_WM_PAINT()
    END_MESSAGE_MAP()

    class CMeineAnwendung : public CWinApp {
    public:
    virtual BOOL InitInstance();
    };

    BOOL CMeineAnwendung::InitInstance() {
    m_pMainWnd = new CMeinHauptfenster();
    m_pMainWnd -> ShowWindow(SW_SHOW);

    return TRUE;
    }
    CMeineAnwendung Programm;

    /////////////////////////////////////////////////////////////////////

    Nun möchte ich gerne die zweite Bitmap(IDI_ICON2) über die Funktion
    InvalidateRect löschen, so das nur noch die erste Bitmap zu sehen ist.
    Aber InvalidateRect funktioniert nicht so richtig. Beim Kompilieren
    erscheinen dauernd Fehler. Wie müsste die Funktion konkret in meinem
    Beispiel aussehen?

    Schon mal vielen Dank!

    Gruß Crabbe



  • Ich kann nicht ganz nachvollziehen, warum du zuerst 2 Bitmaps übereinander legen möchtest, und dann 1 davon wieder löscht. Würde es nicht reichen, 1 Bitmap zu zeichnen und diese bei Bedarf einfach neu zu zeichnen?



  • Ich will einen Punkt(die eine Bitmap) über eine andere Bitmap wandern lassen.
    Natürlich könnte ich jetzt mehrere Bitmaps zeichnen und hintereinander anzeigen
    lassen. Aber erstens ist der Weg des Punktes vorher noch nicht bestimmt und zweitens wäre diese Möglichkeit nicht gerade professionel.

    Gruß Crabbe



  • Schau mal hier nach!

    http://www.henkessoft.de/mfc_einsteigerbuch_kapitel9.htm

    hier wird ein "Spiel" programmiert mit der MFC (auf einem Dialog)!

    So ca. in der mitte wird auch "InvalidateRect(&rect, FALSE);" verwendet.

    Schau´s dir einmal an. BYE, Sigi



  • Vielen Dank für die Antwort!

    Gruß Crabbe


Anmelden zum Antworten