FAQ - Grafik - TBitmap in TIcon umwandeln



  • http://www.c-plusplus.net/forum/viewtopic-var-t-is-39236.html

    In der Funktion wird ein Icon zur Laufzeit mit new erzeugt:

    TIcon* icn = new TIcon();
    

    ico wird danach nirgendwo "deleted".

    Wäre es nicht besser, es ausserhalb der Funktion zu deklarieren, um es nach Benutzung (irgendwo) zu "deleten"?

    Danke



  • nein wäre es nicht. die funktion gibt doch einen zeiger auf das erstellte icon zurück. der anwender der diese funktion aufruft, muss sich also selber darum kümmern und den belegten speicher mit delete wieder freigeben.

    // Bild laden
    Graphics::TBitmap *bmp  = new Graphics::TBitmap();
    bmp->LoadFromFile("c:\\blahfasel.bmp");
    
    // in Icon konvertieren
    TIcon *icon = BitmapToIcon(bmp, clRed);
    
    if (icon)
    {
      // ... was machen
    
      // belegten Speicher freigeben
      delete icon;
    }
    else
      ShowMessage("Error while converting bitmap to icon");
    

Anmelden zum Antworten