Sauvegarder une image dans une picture box

jeanjeank40 Messages postés 6 Date d'inscription jeudi 24 mars 2005 Statut Membre Dernière intervention 24 juillet 2006 - 30 mars 2005 à 03:22
les french texans Messages postés 21 Date d'inscription mardi 14 juin 2005 Statut Membre Dernière intervention 23 octobre 2006 - 11 juil. 2005 à 02:13
salut tout le monde je suis nouveau sur le forum et j'ai un probleme qui me bloque
debutant en vb6 je pense que l'un(e) d'entre vous sera capable de m'aider!
voila mon probleme:
j'ai créer une image dans une picturebox à l'aide de la fonction
picture1.PSet (i, j), RGB(Rouge, Vert, Bleu)

j'arrive bien a creer mon image car je la vois s'afficher dans ma picturebo "picture1" mais maintenant j'ai besoin de la sauvegarder dans un fichier et je galere
j'ai essayé avec: SavePicture Image, "C:\pict.BMP" mais j'obtiens une image blanche et dont la taille n'a rien a voir avec celle que j'attends

si quelqu'un qui a deja eu ce genre de prob ou bien qui sait comment resoudre ceci ca serait bien cool de me filer un coup de main!

merci d'avance de votre soutien!

jean

7 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
30 mars 2005 à 06:54
Le plus simple reste de faire un Picture1.Picture = Picture1.Image avant de la sauvegarder.



Cela donne donc :

Set Picture1.Picture = Picture1.Image

Call SavePicture (Picture1.Picture, "C:\pict.BMP")

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
jeanjeank40 Messages postés 6 Date d'inscription jeudi 24 mars 2005 Statut Membre Dernière intervention 24 juillet 2006
1 avril 2005 à 01:45
merci de ton aide darksidious c'est exactement la solution a mon probleme
j'avais essayé un truc dans le genre mais je n'avais pas mis le "set" et le "call"

je rajoute une précision pour que cela marche correctement: il faut mettre:
picture1.autoredraw=true
picture1.autosize=true

bonne continuation a toi

jean
0
les french texans Messages postés 21 Date d'inscription mardi 14 juin 2005 Statut Membre Dernière intervention 23 octobre 2006
7 juil. 2005 à 18:02
bonjour, je rencontre le meme probleme que jeanjeank40.


J'ai applique les conseils de DarkSidious mais j'enregistre toujours une picture box (vide donc grise) aux bonnes dimentions par contre (merci pour picture1.autosize=true ;)

Je rempli ma picture box avec la fonction Pset et j'utilise VB6 au faites.

petit extrait de mon code (grandement pompe sur DarkSidious ;):

Set Picture2.Picture = Picture2.Image
Picture2.Refresh
Call SavePicture(Picture2.Picture, CommonDialog2.FileName)

merci pour toutes vos suggestions
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
7 juil. 2005 à 18:20
Essaye avec un :

Call SavePicture(Picture2.Image, CommonDialog2.FileName)

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
les french texans Messages postés 21 Date d'inscription mardi 14 juin 2005 Statut Membre Dernière intervention 23 octobre 2006
7 juil. 2005 à 18:56
Je te remerci pour ta reponse extremement rapide !!!

je vient de tester ton conseil et cela fait le meme chose. Quand j'ecrit la ligne :
"Set Picture2.Picture = Picture2.Image"
ma picture box se vide (elle redevient grise), donc quand juste apres elle s'enregistre, cela m'enregistre ce que je voit (rectangle gris)

Voici la boucle qui rempli ma picturebox si cela peut t'aider :

For he = 0 To Picture1.Height - 5
For wi = 0 To Picture1.Width - 5

' draw the new pixel
Picture2.PSet (wi, he), (picture_array(wi, he) + picture_array(wi, he) * 256 + picture_array(wi, he) * 65536)

Next wi
Next he

picture_array est un tableau de double compris entre 0.0 et 255.0 (hor contexte, j'admet que cela est bizarre mais j'en ai besoin car je l'utilise dans des dll en c++ que j'appellerai dans un futur proche ... j'espere ;)

PS : pourrai me dire pourquoi des fois il faut mettre Call et Set et pas a d'autre moment

Sinon, merci encore de t'etre interraisse a mon sujet (en parcourant le site, j'ai pu voir que tu ete asser occupe !!!!)
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
7 juil. 2005 à 21:02
Les Set, c'est lorsque tu utilise des objets, les Call ne sont que facultatifs, mais ca fait plus clair dans un code !



Là je ne vois vraiment pas pourquoi ca ne marche pas ! 8(



Tu devrais ouvrir un nouveau topic sur le forum pour voir si quelqu'un d'autre a une solution.

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
les french texans Messages postés 21 Date d'inscription mardi 14 juin 2005 Statut Membre Dernière intervention 23 octobre 2006
11 juil. 2005 à 02:13
Merci DarkSidious,

mon probleme est resolu, cela venait du AutoRedraw, je le mettais a TRUE QUE juste avant : "Set Picture2.Picture = Picture2.Image" alors qui faut le mettre avant le premier "Picture2.PSet() ".

Merci pour les reponses.
0
Rejoignez-nous