cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 1 déc. 2004 à 11:45
Sinon, passe aussi par les fonctions de l'API Windows : StretchBlt. Voir ProgOtoP API Viewer pour plus d'info et des exemples d'utilisation.
_______________________________________
DarK Sidious
[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
cs_ravachol
Messages postés86Date d'inscriptionvendredi 28 décembre 2001StatutMembreDernière intervention10 juillet 2008 1 déc. 2004 à 14:38
ya toujours la pb c que pour que l'image soit dan sl'image il faut que autoredraw soit true lors du paintpicture mais s'il est true et bas pour les grandes images ca deconne !
je vais faire des test voir c jusqu'a quel taille et voir si cette taille me suffit !
(si tu as une idée de la taille maxi !)
merci en tout cas
(je me plonge dans les api si ca ne va pas mais bon comme tout marche sinon, ca me fait chier :-( )
a+
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 1 déc. 2004 à 14:46
Tu peux utiliser l'API que pour cette partie, et utiliser les fonctions VB ailleurs, ca ne pose pas de problème.
Si l'autoredraw est à False, n'oublie pas de faire des Picture1.Picture = Picture1.Image et des Picture1.Refresh !
_______________________________________
DarK Sidious
[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 1 déc. 2004 à 15:06
sans AutoRedraw tu n'auras jamais la Picture égale à l'image.
si tu veux que l'image s'efface pas tu met ton PaintPicture dans l'évênement paint de la picture.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 1 déc. 2004 à 15:23
Gobillot : s'il met le PaintPicture dans l'événement Paint, cela va tracer l'image à chaque modification en PaintPicture, ce qui est très génant vu que tout les effets seront additionné (exemple, s'il veut redimensionner son image en x2, à chaque point tracé, ca la redimensionnera, donc elle deviendra vite énome !)
_______________________________________
DarK Sidious
[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 1 déc. 2004 à 15:32
ça c'est l'inconvénient, faudrait qu'il fasse son Paintpicture par rapport à quelque chose de fixe.
Le refresh ne change rien l'image ne se copie toujours pas.
jusqu'à présent je n'ai toujours pas trouvé de solution, il y a une limite pour la taille des images en Autoredraw, et cette limite dépend de la mémoire GDI. je sais pas s'il y a un moyen de l'augmenter.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 1 déc. 2004 à 15:48
Alors il faut passer par la fonction API StretchBlt, à ce moment là, je ne pense pas que l'autoredraw influe sur quelque chose !
_______________________________________
DarK Sidious
[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 1 déc. 2004 à 17:07
Le problème c'est que son Image elle s'effacera toujours.
je pense que le seul moyen c'est de découper son image et de l'afficher en plusieurs morceaux, de cette façon on peut atteindre des zoom très grands, l'image affichée étant toujours suffisament petite, et en jouant sur les coordonnées x et y de l'image d'origine on peut se promener dans l'image.
si c'est pour la sauvegarder, même chose, il faudra la découper, parce que même si t'arrives à l'afficher avec Strechblt ou PaintPicture, tu pourras pas la sauvegarder parce qu'elle sera vide.
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 1 déc. 2004 à 20:04
avec StretchBlt, oui c'est plus rapide que Paintpicture mais je crois pas que ça peut régler son problème d'AutoDraw, vu qu'il faudra quand même la mémoire nécessaire.
de plus il faut que l'image source soit visible, déjà que la sienne est trop grande alors je sais pas s'il va pouvoir mettre les deux images visibles en même temps...
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 1 déc. 2004 à 21:15
zut !
j'ai laissé en twips alors que les API travaillent en pixels, donc après rectification il semble bien que StrechBlt est plus rapide que PaintPicture.
avec un boucle de 1000 et une Largeur doublée:
PaintPicture --> 3640 millisecondes
StrechBlt ------> 156 millisecondes
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 1 déc. 2004 à 22:05
Attention gobillot, ces tests ne sont vraiment parlant que si ton programme est compilé en code natif ! Si tu teste une fonction VB en mode interprêté (donc à partir de VB, sans le compiler), elle sera bien moins rapide qu'en compilé ! (voir ma source DKS_Gestion_Image par exemple : 5 fois plus rapide en interprêté, et 30 fois plus rapide que Get/SetPixel en compilé !)
_______________________________________
DarK Sidious
[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
cs_ravachol
Messages postés86Date d'inscriptionvendredi 28 décembre 2001StatutMembreDernière intervention10 juillet 2008 2 déc. 2004 à 18:30
apres mes tests le nb max de pixels d'un image
est entre 8.4 et 8.5 millions de pixels (j'ai pas poussé plus loin mes tests !)
c donc largement plus qu'ilne m'en faux !!!!
donc je suis content et vous remercie vraiment
de votre disponibilité et votre rapidité !