ZOOM DÉPLACEMENT PICTUREBOX COMME PHOTOSHOP

darkanlegrand Messages postés 11 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 5 mai 2006 - 3 mai 2006 à 20:35
Ayine Messages postés 4 Date d'inscription mardi 13 février 2007 Statut Membre Dernière intervention 1 décembre 2008 - 14 févr. 2007 à 12:21
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/37418-zoom-deplacement-picturebox-comme-photoshop

Ayine Messages postés 4 Date d'inscription mardi 13 février 2007 Statut Membre Dernière intervention 1 décembre 2008
14 févr. 2007 à 12:21
ça bien marché bravo
CADRATURE Messages postés 25 Date d'inscription mercredi 26 novembre 2003 Statut Membre Dernière intervention 13 juin 2009
19 nov. 2006 à 16:51
SUPER
rigado56 Messages postés 5 Date d'inscription samedi 18 janvier 2003 Statut Membre Dernière intervention 6 juillet 2006
7 mai 2006 à 19:58
chapeau !
cs_LogOff Messages postés 69 Date d'inscription dimanche 6 octobre 2002 Statut Membre Dernière intervention 14 juillet 2009
5 mai 2006 à 14:33
Très bon code; bravo!

(la scrollbar est accessoire, le principal est le code du zoom)
darkanlegrand Messages postés 11 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 5 mai 2006
5 mai 2006 à 07:28
hello, c'est décidé je vais utiliser la classe de gestion d'image de DARKSIDIOUS. Mais par manque de temps, boulot..., je ne pourrai avant la semaine prochaine...

BourgineVB, pour changer la valeur de scroll, fait le dans les propriétés du controle ZoomBar.Max = xxx.

Squallou, non ce n'est pas un pb de ta part, je l'ai eu aussi. Mais cela vient du controle. Comme le dit Bourgine, je crois que le mieu est de le remplacer un Slider. J'avais mis c'est OCX vraiment juste pour le Fun... il faudra assurement le retravailler!

Merci à tous de votre participation.

@+
cs_Squallou Messages postés 249 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 15 juillet 2006
4 mai 2006 à 19:29
Salut. Un petit bug ou pb de ma part je sais pas : quand je clique sur la flèche à droite du zoom ça augmente pas le zoom de 1 à chaque fois. Des fois ça revient de 2 ou 3 en arrière. :/

Sinon franchement tu gères. C'est tout simplement super. Encore un grand bravo *clap clap clap*
BourgineVB Messages postés 1 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 4 mai 2006
4 mai 2006 à 18:04
Bonjour,

J'ai vu ton code et je le trouve génial et bien documenté. C'est exactement ce dont j'ai besoin. En fait je voudrais numériser (des points ou des lignes) sur une image de fond en zoomant ou déplaçant l'image. Il ne me reste plus qu'à ajouter le code pour gérer la numérisation.
Il n'y a que le code de ton ocx qui est un peu du chinois pour moi, vu que je ne suis pas expert en VB. Question: comment faire pour que le niveau max du zoom soit plus que 300. Y a-t-il moyen de le paramétrer ?
Je pense que je vais le remplacer par un scroll bar classique
Merci
BB
darkanlegrand Messages postés 11 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 5 mai 2006
4 mai 2006 à 07:41
Merci Dark je n'en attendais pas moins de ta part. Je t'avouerai que j'ai bien penser à utiliser ta classe! Je vais mis mettre de ce pas ;-)
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
3 mai 2006 à 21:02
Alors voici mon commentaire ;)

Tu aurais pu faire plus optimisé, bien que là, même avec des grandes images, c'est déjà pas trop mal.
En fait, tu aurais pu ne pas utiliser le contrôle image en passant par un stdPicture, un peu moins gourmand en mémoire, ou encore mieux : stocker uniquement les bits de ton image (par ma classe de gestion d'image par exemple... ;)), puis faire un StretchDIBits, ce qui serait bien plus rapide à afficher je pense, et surtout, ca prendrais moins de mémoire).
De même pour ton paintpicture : remplace le soit par un StretchBlt (qui est plus efficace pour de grandes images), soit par un StretchDIBits une fois de plus, dont tu stockera qu'une seule fois le tableau de bits.
De même, évite autant que possible les autoredraws, ils sont gourmants en mémoire, et sont assez lent par rapport à un retraçage de l'image "à la main" lorsque c'est nécessaire (là encore, un SetDIBits améliorerait les performances).

Sinon, beaucoup de commentaire, source assez simple à comprendre.
Quelques petites remarques sur l'interface :
Menu ouvrir sous ? Pourquoi le "sous" ?
Tu ne gère pas le redimensionnement de la fenêtre, alors autant désactiver cette fonctionnalité.
Tu laisse la possibilité à l'utilisateur d'ouvrir n'importe quel type de fichier, ca aurait été plus judicieux de n'ouvrir que des images (bien que tu gère l'erreur).

Voilà, pour ce qui serait surpris par mes remarques sur la rapidité, j'ai posté tout cela à la demande de darkan d'avoir mon avis sur la rapidité de sa source.

DarK Sidious
darkanlegrand Messages postés 11 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 5 mai 2006
3 mai 2006 à 20:35
Le code est TRES commenté afin de faciliter la lecture.
Il y a un "Bug" connu (et géré): AUTOREDRAW ERREUR 480, qui se produit lorsque l'on dessine avec la méthode PaintPicture une image assez lourd. chez moi cela se produit avec une image 8 bits 2420 x 2420 Pixels. Donc si qlq'un à une idée... bien venu.

J'utilise les Picture Box car en fait, dans une autre partie du soft en cour, je veux dessiner dessus en ajoutant des calques, ajouter des objets pré-conçu ect...

J'aimerais assez travailler sur la partie optimisation de cette source, car je suis un newbie du dévellopement, et mais connaisances ne sont pas très étendus...

Merci.
Rejoignez-nous