Sauvegarde en memoire d'un Bitmap

Résolu
moimadmax Messages postés 18 Date d'inscription mardi 2 septembre 2003 Statut Membre Dernière intervention 27 novembre 2008 - 16 oct. 2008 à 21:34
moimadmax Messages postés 18 Date d'inscription mardi 2 septembre 2003 Statut Membre Dernière intervention 27 novembre 2008 - 27 nov. 2008 à 19:34
Je travail sur un projet qui fait une trace (en marquant un point toute les 15s) sur un plan en utilisant la position GPS. Je voudrai aussi pouvoir visualiser la position actuelle sur le plan par un point plus gros. pas de problème avec la partie de dessin.


J'ai ce Code qui permet de sauvegarder l'image, de placer le point et de restaurer l'image sauvegardé sans le point afin d'etre utilisé plus tard pour continuer la trace.


  tempPos = (Bitmap)bitmap.Clone(); // Sauvegarde l'image en memoire

  traiter(position + " : POS : 200"); // place le point
  pb.Refresh(); // rafraichi la picturebox afin qu'elle affiche
  bitmap = (Bitmap)tempPos.Clone();

Et c'est là que le probleme commence. J'avais essayé sans le Clone mais vu que tempPos fait une reference a bitmap, ca ne fonctionne pas. J'ai essayé avec Clone pour tenter de faire un passage par Valeur mais ca na semble pas concluant car ca fait pareil qu'avant :(

D'avance Merci pour votre aide.

Matthieu

3 réponses

ctx_man Messages postés 285 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 20 janvier 2013 2
27 nov. 2008 à 17:47
Salut,

plutot que de clonner ton objet, je te propose d'en faire un autre, tout nouveau.

Essaye quelques chose comme ca :

Bitmap map; // Ta carte sans points
Bitmap mapTrace = new Bitmap(map); // Construit un autre bitmap dupliquant le premier.

Je n'ai pas testé, donc si ca pose toujours probleme, voilà une autre solution :

Bitmap map; // Ce Bitmap contient ta carte, sans points, Tu la charge comme tu veux

Bitmap mapTrace = CopyBitmap(map); // Ce bitmap en est un tout nouveau, mais identique au map au point de vue graphique


public Bitmap CopyBitmap(Bitmap src)

{

&nbps;&nbps;&nbps;&nbps;Bitmap dst = new Bitmap(src.Width, src.Height); // Construit une image de la même taille

&nbps;&nbps;&nbps;&nbps;Graphics g = Graphics.FromImage(dst); // Sur cette nouvelle image on obtient un objet de dessin

&nbps;&nbps;&nbps;&nbps;g.DrawImage(src, 0, 0, src.Width, src.Height); // Sur cette nouvelle image on dessine l'image source

&nbps;&nbps;&nbps;&nbps;g.Dispose(); g = null; // On libère l'objet de dessin
&nbps;&nbps;&nbps;&nbps;return dst; // On retourne le nouveau Bitmap

}

Le travail c'est la santé, ne rien faire c'est la préserver !!!
3
ctx_man Messages postés 285 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 20 janvier 2013 2
27 nov. 2008 à 17:49
Damned, foiré mes espacements (les &nbps; sont a ignoré, j'ai inversé deux lettre dans ce code, normlament ca devrait être des espaces ^^')

Le travail c'est la santé, ne rien faire c'est la préserver !!!
0
moimadmax Messages postés 18 Date d'inscription mardi 2 septembre 2003 Statut Membre Dernière intervention 27 novembre 2008
27 nov. 2008 à 19:34
Je te remercie, je vais tenter ca ...

>Madmax, Parce que le Java c'est bien :p
0