Comment créer un Bitmap copie en profondeur

Je fais face à des images dans ma demande et à certaines fins, j'ai besoin de créer une copie de l'image Bitmap. Est-il un moyen élégant de comment le faire?

J'ai essayé

Bitmap deepCopy = original.Clone();

,eh bien, apparemment ce n'est pas de créer une copie en profondeur, mais peu profonde.
Ma prochaine tentative de créer une nouvelle image Bitmap

Bitmap deepCopy = new Bitmap(original);

Malheureusement, ce constructeur est Bitmap(Image), pas en mode point(Bitmap) et Bitmap(Image) va convertir ma belle 8bppIndexed Pixelformat dans un autre.

Une autre tentative a été à l'utilisation d'un MemoryStream

public static Bitmap CreateBitmapDeepCopy(Bitmap source)
{
    Bitmap result;
    using (MemoryStream stream = new MemoryStream())
    {
        source.Save(stream, ImageFormat.Bmp);
        stream.Seek(0, SeekOrigin.Begin);
        result = new Bitmap(stream);
    }
    return result;
}

Bien, cela ne fonctionne pas non plus, puisque le MemoryStream doit être ouvert pendant toute la durée de vie de Bitmap.

Donc, j'ai résumé toutes mes deadends et j'aimerais vraiment voir une belle manière élégante de la création d'un Bitmap copie en profondeur. Merci pour ça 🙂

InformationsquelleAutor Biggles | 2011-05-04