PROGRAMME DE DESSIN À LA SOURIS AVEC OUVERTURE ET ENREGISTREMENT EN BMP

SnkVrt Messages postés 89 Date d'inscription vendredi 16 mars 2007 Statut Membre Dernière intervention 23 février 2010 - 18 nov. 2009 à 15:45
SnkVrt Messages postés 89 Date d'inscription vendredi 16 mars 2007 Statut Membre Dernière intervention 23 février 2010 - 19 nov. 2009 à 10:03
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/50865-programme-de-dessin-a-la-souris-avec-ouverture-et-enregistrement-en-bmp

SnkVrt Messages postés 89 Date d'inscription vendredi 16 mars 2007 Statut Membre Dernière intervention 23 février 2010
19 nov. 2009 à 10:03
Ok, là j'ai compris. :)
Merci Renfield pour tes explications
(et ta patience) ;)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
19 nov. 2009 à 09:57
en gros, chaque GetDC va demander un nouveu hDC à Windows.
sa reserve est grande, mais pas illimitée...

il te faut utiliser ReleaseDC pour indiquer a windows que le DC ne t'es plus utile
SnkVrt Messages postés 89 Date d'inscription vendredi 16 mars 2007 Statut Membre Dernière intervention 23 février 2010
19 nov. 2009 à 09:41
Pour mes variables, faut que je retourne jeter un coup d'oeil sur mon code.
Pour le Shift, ok c'est compris je retiendrais.

Mais pour la fuite mémoire...Je sais meme pas ce que ça veux dire "fuite mémoire" et "libérer le DC obtenu" :(
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
19 nov. 2009 à 08:58
c'est simple:

Dim Couleur1, Couleur2, SaveCouleur1, SaveCouleur2 As ColorConstants

ici, seule la dernière variable sera typée.
les autres seront des Variant

pour la fuite mémoire, c'est bête aussi. Tu fais un GetDC
il te faut libérer le DC obtenu

pour le Shift, on le teste ainsi :
If Shift = vbShiftMask then
....
End If
SnkVrt Messages postés 89 Date d'inscription vendredi 16 mars 2007 Statut Membre Dernière intervention 23 février 2010
19 nov. 2009 à 08:49
Alors là, rien que pour comprendre ce que tu me dis, ça va me prendre du temps...
Pour le SHIFT, j'avais bien remarqué que ça marche meme en appuyant sur Ctrl mais j'ai pas cherché à comprendre.
Faut dire que j'avais fait ce prog pour mon fils qui avait 3 ans et comme ça fonctionnait...;)
Mais bon, je veux progresser alors je vais me pencher sur tes remarques.
Merci Renfield.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 nov. 2009 à 23:12
rapidement......

fuite mémoire...
GetDC doit etre accompagné d'un ReleaseDC

Dim Couleur1, Couleur2, SaveCouleur1, SaveCouleur2 As ColorConstants
ici, Couleur1, Couleur2, SaveCouleur1 sont des Variant
seul SaveCouleur2 est un ColorConstants

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Tracé = True
If Shift = 0 Then ' \On ne garde pas le point central Si l'utilisateur n'appuie pas sur SHIFT

en l'occurrence c'est faux... la variable Shift indique l'etat de la touche Shift, Ctrl et Alt
SnkVrt Messages postés 89 Date d'inscription vendredi 16 mars 2007 Statut Membre Dernière intervention 23 février 2010
18 nov. 2009 à 15:45
Bon ben je viens de trouver la solution à mon problème de tracé continu grace au programme de dessin de Jotrash.

Il faut utiliser la fonction line...
Objet.Line -(x,y)
Et non la fonction Pset

Merci Jotrash
Rejoignez-nous