GDI+ Bitmap Array Problem



  • Hallo!

    bin neu hier und habe ein großes (kleines?) Problem. Ich möchte in einer Dialogfeldbasierten MFC C++ Anwendung, mithilfe der GDI+ Objekte vom Typ
    Bitmap dynamisch erzeugen. Und zwar beliebig viele, da erst zur Laufzeit
    feststeht wieviele Objekte ich davon brauch. Hier mal ein Codeschnipsel:

    Bitmap bitmap(L"h2o_hund.jpg");
    Bitmap* clone = bitmap.Clone(Rect(0, 0, CntX, CntY), PixelFormatDontCare);
    g.DrawImage(clone, 0, 0, 210, 252);
    
    Bitmap *bmp;
    bmp = new Bitmap(); // new Bitmap(0,0) geht auch ned
    

    die oberen 3 Zeilen klappen wunderbar, er kopiert einen Teil aus dem Bild und zeigts
    an. Im unteren Teil bekomm ich immer den Fehler das es kein Standartkonstruktor gibt.

    Wie lege ich jetzt Bitmap Objekte dynamisch an Oder habe ich nur ein Syntaxproblem ?!

    Im MSDN steht folgendes :

    // C++
    Bitmap * myBitmap = new
    Bitmap(S"D:\\Documents and Settings\\Joe\\Pics\\myPic.bmp");
    

    die machens also auch so. Übernehme ich das so in mein Programm bekomme ich den Fehler :

    "fatal error C1190: Verwalteter abzielender Code erfordert '#using <mscorlib.dll>' und den '/CLR'-Schalter"
    

    ändere ich das S zu Bitmap(L"...") kommt folgendes :

    error C2660: 'Gdiplus::GdiplusBase::operator new': Funktion akzeptiert keine 3 Argumente
    
    error C2512: 'Gdiplus::Bitmap': Kein geeigneter Standardkonstruktor verfügbar
    

    komischerweise funktioniert es so wunderbar unter der WinAPI, also ohne MFC.
    Wie bekomme ich das jetzt nur mit den MFC zum laufen??

    VIIIIELEN Dank schonmal !!



  • Habe mein Problem inzw. gelöst.

    #include <vector>
    using namespace std;

    vector<Bitmap*> test;

    test.push_back( bild.Clone(Rect(0, 0, 210, 252), PixelFormatDontCare) );
    test.push_back( bild.Clone(Rect(210, 0, 210, 252), PixelFormatDontCare) );
    ....
    ....
    ....

    jetzt kann ich ohne Probleme auf test[i] zugreifen und hatte auch gelesen das bei
    den vektoren auch die ganze geschichte mit delete [] etc. wegfällt, bzw. ja schon automatisch integriert ist 🙂


Anmelden zum Antworten