Impossible de faire paintpicture en mode autoredraw

cs_ravachol Messages postés 86 Date d'inscription vendredi 28 décembre 2001 Statut Membre Dernière intervention 10 juillet 2008 - 1 déc. 2004 à 11:23
cs_ravachol Messages postés 86 Date d'inscription vendredi 28 décembre 2001 Statut Membre Dernière intervention 10 juillet 2008 - 3 déc. 2004 à 10:19
quand je fait un paintpicture en mode autoredraw
mais pour une image de grande taille
il me dit impossible de faire cette image ne mode autoredraw

j'ai besoin de ce mode pour creer mon image apres

est ce bien un pb de taille ?
est il possible de repousser cette limite ?
sinon quelle est cette limite ?

merci d'avance !

rava

23 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
1 déc. 2004 à 11:44
Tu dois utiliser de grosses images !

Désactive l'autoredraw avant de faire ta manip alors !

Et rétablit le après.
_______________________________________

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
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
0
cs_ravachol Messages postés 86 Date d'inscription vendredi 28 décembre 2001 Statut Membre Dernière intervention 10 juillet 2008
1 déc. 2004 à 12:11
merci je regarde ça !
0
cs_ravachol Messages postés 86 Date d'inscription vendredi 28 décembre 2001 Statut Membre Dernière intervention 10 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+
0

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

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
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
0
cs_ravachol Messages postés 86 Date d'inscription vendredi 28 décembre 2001 Statut Membre Dernière intervention 10 juillet 2008
1 déc. 2004 à 14:57
c ca mon pb si autoredraw est a false Picture1.Picture = Picture1.Image efface l'image !

mais pour qu'il ne l'efface pas il faut qu'il soit true avant le paintpicture !

je vais faire d'autres test avec un Picture1.Picture = Picture1.Image un pue partout : :-)

sinon .refresh ca fait quoi ?
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
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.

Daniel
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
1 déc. 2004 à 15:11
Fait un refresh avant le .Picture = .Image

Ca permet de raffraichir l'image => fait un autoredraw sans qu'il soit activé
_______________________________________

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
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
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
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.

Daniel
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
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
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
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.

Daniel
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
1 déc. 2004 à 19:09
Mais avec StretchBlt, lorsque l'autoredraw est à true, on peux la sauvegarder !

SavePicture Picture1.Image, "nom du fichier"
_______________________________________

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
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...

Daniel
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
1 déc. 2004 à 20:11
Hein ? Plus rapide, ca c'est pas sûr !

Niveau mémoire, c'est peut-être géré différement, faux essayer...
_______________________________________

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
1 déc. 2004 à 21:01
je pensais bien que les API étaient plus rapides , mais d'après mes tests c'est moins évident

pour une image de 230 x 270

avec une boucle de 5000 copy simple sans stretch:
PaintPicture --> 6680 millisecondes
StrechBlt ------> 16 millisecondes

avec un boucle de 100 et une Largeur doublée:
PaintPicture --> 360 millisecondes
StrechBlt ------> 2735 millisecondes

Daniel
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
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

Daniel
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
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
0
cs_ravachol Messages postés 86 Date d'inscription vendredi 28 décembre 2001 Statut Membre Dernière intervention 10 juillet 2008
2 déc. 2004 à 14:58
merci de ca debat autour de mon sujet !

mais je ne peux la cecouper car le but du prog
est faire un pavage avec des photos
si je le decoupe , je n'ai rien fait du tout !!

mais bon le but du prog n'est pas d'avoir une resolution enorme
juste une imag qui puisse etre imprimé ou developpé
je vais voir si la res suffit

sinon l'autoredraw a true, je n'est plus besoin que l'image s'affiche s'il est est en visible false ca marche aussi

tout le reste marche apriori sauf les bug bien sur (j'en ait corrigé)
apres je vous montre ce que j'ai fait !

merci en tout cas !
0
cs_ravachol Messages postés 86 Date d'inscription vendredi 28 décembre 2001 Statut Membre Dernière intervention 10 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é !
0
Rejoignez-nous