jekifvb6
Messages postés156Date d'inscriptionlundi 13 novembre 2000StatutMembreDernière intervention18 septembre 2006
-
8 nov. 2005 à 00:46
jekifvb6
Messages postés156Date d'inscriptionlundi 13 novembre 2000StatutMembreDernière intervention18 septembre 2006
-
14 nov. 2005 à 21:18
Bonjour a toutes et tous !
Mon objectif est le suivant: réaliser une application toute simple sous
VB6 qui permette d'inserer des photos haute resolution sur un dessin,
au format A4, sans n'avoir que la moitie de ma page a l'ecran!
Ce que j'ai fais: j'ai une form principale contenant une picture box
qui represente une sorte d'apercu de feuille A4, sur laquelle
j'incruste des apercus de photos. Je parle "d'apercus" car je travaille
en parallele sur une form invisible, aux dimensions importantes (genre
20000x30000 twips), afin d'y placer le dessin original (format A4) et
les photos en haute definition. Et je realise des "paintpicture" entre
ma forme visible, aux dimensions reduites, qui me sert juste d'apercu,
et ma forme invisible sur laquelle je travaille avec les donnees
originales.
J'aimerais que vous me critiquiez afin de savoir s'il existe une
maniere plus elegante de gerer cette problematique et d'alleger
l'execution de l'application, qui est pour l'instant assez volumineuse.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 8 nov. 2005 à 06:09
déjà au lieu d'utiliser une feuille temporaire, stocke ton image dans
un stdpicture, ca t'évitera de gaspiller des ressources graphiques (DC)
pour rien.
Ensuite, au lieu d'utiliser PaintPicture, utiliser la fonction API BitBlt qui est un peu plus rapide.
Si tu fait du traitement de pixels (modification de couleurs des
pixels), va voir ma source DKS_Gestion_Image qui te permettra de gagner
environ 30x de rapidité de plus que les fonctions standard de VB, ce
qui est loin d'être négligeable !
_____________________________________________________________________
DarK Sidious
Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/
jekifvb6
Messages postés156Date d'inscriptionlundi 13 novembre 2000StatutMembreDernière intervention18 septembre 2006 8 nov. 2005 à 09:43
merci beaucoup pour ton aide !
je ne connaissais pas "stdpicture" mais ca semle convenir parfaitement
a ce que je recherche! mais pourrais tu m'en dire davantage ? car je
n'ai trouvé que sa declaration:
Dim X As New StdPicture
mais je ne sais pas comment on doit définir ses dimensions (s'il le faut!) et existe-t-il les meme methodes que sur une picturebox classique?
merci d'avance.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 8 nov. 2005 à 10:45
Non, un stdPicture n'est qu'un objet permettant de stocker les images
(c'est le même type que la propriété Picture du PictureBox), ca évite
surtout de passer par un picturebox temporaire qui bouffe plus de
ressource qu'un stdpicture, cependant, le stdpicture ne permet que de
stocker l'image, et non de la manipuler.
Pour charger une image dans un stdPicture :
Dim X As New StdPicture
Set X = LoadPicture("nom du fichier image")
'OU :
Set X = Picture1.Picture
_____________________________________________________________________
DarK Sidious
Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/
jekifvb6
Messages postés156Date d'inscriptionlundi 13 novembre 2000StatutMembreDernière intervention18 septembre 2006 8 nov. 2005 à 13:17
ah d'accord, merci pour l'explication !
En gros, pour mon application, puisque je n'affiche jamais ma form de
grandes dimensions, je peux remplacer par exemple mes
"grande_form.picture1.picture" par "grande_form.picture.stdpicture" ,
c'est ca ou bien j'ai rien compris?
merci encore de ton aide!
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 9 nov. 2005 à 09:55
Dans ton cas, le plus simple c'est de charger les images une à une dans
un stdpicture, et d'utiliser ces stdpicture pour faire tes paintpicture
sur ton image finale, par exemple :
jekifvb6
Messages postés156Date d'inscriptionlundi 13 novembre 2000StatutMembreDernière intervention18 septembre 2006 9 nov. 2005 à 13:10
merci beaucoup Dark Sidious, mais sachant que j'insere des photos
(4800*3600 twips) dans une picture (30000*20000 twips), il semble
helas necessaire que je garde ma picturebox de 30000*20000 et que je
fasse une stdPicture que pour charger mes petites photos (4800*3600)
Je pense que pour vraiment optimiser, il faudrait que je trouve un
moyen de ne pas faire une si grande picture box, que je n'affiche meme
pas en plus, mais je m'en sers juste pour incruster mes photos a partir
de paintpicture.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 10 nov. 2005 à 18:43
Si si,
Il existe toujours des moyens d'optimiser, mais la solution ici passe
par des méthodes relativement compliqué, et je ne suis pas sûr que tu y
gagnerais beaucoup a final : créer un DC (createDC) temporaire dans
lequel tu y collerais tes images (BitBlt), sans oublier de détruire le
DC dès que tu n'en a plus besoin (DeleteDC), mais franchement, une
picturebox c'est quand même bien plus simple qu'un DC temporaire, et
remplit le même rôle !
_____________________________________________________________________
DarK Sidious
Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/