Sauvegarde d'image sous vb6 problème de "boucle"

Résolu
Horace7 Messages postés 6 Date d'inscription dimanche 26 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 - 28 déc. 2009 à 13:05
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 28 déc. 2009 à 22:49
Bonjour,

Je cherche 2 ou 3 codes dans des sources mis à disposition sur le forum... Je suis arrivé au point d'utiliser :
sauvegarder:
dlg.Filter = "images bmp|*.bmp|images wmf|*.wmf|icones|*.ico|curseurs|*.cur|fichiers rle|*.rle|metafichiers etendus|*.emf|images gif|*.gif|images jpg|*.jpg|images jpeg|*.jpeg|images GD Picture|*.gdp|tous|*.*"
dlg.Action = 2
If dlg.FileName = "" Then GoTo sauvegarder
        
nom$ = dlg.FileName
Call SavePicture(Picture1.Image, nom$)


Mais le problème c'est qu'il ne veut pas Annuler... Car quand je fait annuler une autre fenêtre apparaît, de même pour la croix...

Donc est-il possible de me corriger ce petit problème ?? Pour que mon programme soit fiable ?

D'avance Merci !


PS : Et si vous avez le temps que pensez vous de :
Sub coulchange(toto As PictureBox, coulanc, coulnouv)
  Dim htoto As Long, X As Integer, Y As Integer, X1 As Integer, Y1 As Integer
  Dim coulanc0 As Long, crnewcolor As Long, couleuranc0 As Long
  toto.AutoRedraw = True
  crnewcolor = coulnouv
  mbrush = CreateSolidBrush(crnewcolor)
  htoto = toto.hdc
  SelectObject toto.hdc, mbrush
  X1 toto.ScaleWidth: Y1 toto.ScaleHeight
  For X = 0 To X1
    For Y = 0 To Y1
      couleuranc0 = GetPixel(htoto, X, Y) 'lecture de la couleur actuelle du pixel
      If couleuranc0 = coulanc Then
        ExtFloodFill htoto, X, Y, couleuranc0, FLOODFILLSURFACE
      End If
    Next Y
  Next X
  toto.AutoRedraw = False
  toto.Refresh
  DeleteObject mbrush
End Sub


Il y a-t-il un moyen pour que les couleurs se change plus vite ?

Encore un grand Merci !

@++ Horace

6 réponses

Horace7 Messages postés 6 Date d'inscription dimanche 26 avril 2009 Statut Membre Dernière intervention 28 décembre 2009
28 déc. 2009 à 19:26
Je me doutais un peu que ce forum allez juste me faire perdre du temps...

Donc avec ma logique j'ai conclu à :

sauvegarder:
        dlg.Filter = "images bmp|*.bmp|images wmf|*.wmf|icones|*.ico|curseurs|*.cur|fichiers rle|*.rle|metafichiers etendus|*.emf|images gif|*.gif|images jpg|*.jpg|images jpeg|*.jpeg|images GD Picture|*.gdp|tous|*.*"
        dlg.Action = 2
        If dlg.FileName <> "" Then
            nom$ = dlg.FileName
            Call SavePicture(Picture1.Image, nom$)
            Text1.Text = "Créé !"
            Text1.Visible = True
            Frame3.Height = "1455"
        End If


@++
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
28 déc. 2009 à 14:06
Salut
On suppose que "dlg" est un CommonDialog (?)
Regarde dans l'aide.
Il existe une propriété CancelError qui, quand elle est à True, provoque une erreur 32755.
Utilisation classique :
Private Sub Form_Load()
    On Error GoTo Erreur
    With CommonDialog1
        .CancelError = True
        .ShowOpen
        MsgBox .FileName
    End With
    Exit Sub
Erreur:
    MsgBox "Erreur " & Err.Number & " - " & Err.Description
End Sub

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Horace7 Messages postés 6 Date d'inscription dimanche 26 avril 2009 Statut Membre Dernière intervention 28 décembre 2009
28 déc. 2009 à 18:08
En plus fou claire c'est possible ??

Pour toi c'est assez "simple", mais j'ai cherché 1/2 heures sur internet un exemple pour sauvegarder en vb6... J'arrive au point ou il manque 2-3 lignes.

Tu ne peux pas au lieu de jouer au devinette me dire quoi faire... Car je viens de débuter le vb6 et je trouve aucune "source précise"... Si je post un message c'est pour un gain de temps car j'ai plus vite fais de chercher...

Et aussi je ne veux pas un message d'erreur mais juste pouvoir annuler "normalement"...

Merci pour ton aide, et j'aurais du préciser que je viens juste de commencer le vb6...

Veuillez bien m'excuser pour ce petit flou de ma part.

J'ai respecté toutes les règles, mon post est appliqué/propre donc je mérite une réponse ayant le même niveau soit complète (donnant/donnant non ?), on ne peut pas me refuser que j'ai cherché... http://www.vbfrance.com/codes/EDITEUR-IMAGE_23838.aspx
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
28 déc. 2009 à 19:31
Non, je ne te donnerai pas un code tout fait, ce n'est pas le but du site (on n'a nullement l'intention de remplacer les professionnels dont c'est le métier), c'est à toi de refflechir.
Si vraiment tu veux gagner du temps, commence par taper F1 sous VB6 et regarder l'aide associée au CommonDialog, tout y est expliqué.
Si tu veux savoir comment ça marche, colle ce code (plus haut) dans un nouveau projet et regarde ce qu'il fait, tu comprendras bien vite comment procéder.
Il te faut te familiariser avec les bases du langage. Dans ce cas, il faut gérer l'erreur, comme décrit dans le code fourni. Si besoin, intéresse toi à la gestion d'erreur.
Une brique après l'autre.
0

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

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
28 déc. 2009 à 19:34
Sacré phénomène, celui-là (pour être poli)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 déc. 2009 à 22:49
Bonjour, Horace7,

Ta surprenante réaction fait que je crains fort que tu devras alors régler seul le deuxième aspect de ta discussion ...(désolé pour toi, mais j'allais y venir, lorsque, voyant ton comportement, je me suis bien évidemment ravisé )


____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0
Rejoignez-nous