Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Nouvel objet Diaporama | |
| | |
Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Nouvel objet Diaporama Jeu 27 Fév 2014 - 0:17 | |
| J'ai fait un diaporama qui affiche des images JPG et BMP, avec une pellicule en bas, contenant des vignettes, et des boutons premier, précédent, suivant et dernier. Chacun de ces boutons affiche l'image choisie et déplace éventuellement la pellicule. Un clic sur une vignette de la pellicule affiche également l'image. Important: Le programme utilise KGF.dll pour dimensionner les vignettes. Chaque diaporama a besoin de 8 numéros d'objets libres consécutifs.Tout est inclus dans un fichier diaporama_inc.bas. In suffit de l'inclure par #INCLUDE, et on a accès aux deux procédures qui gèrent le diaporama. Ces deux procédures sont: CreateDiaporama(no%,p%,x%,y%,w%,h%)avec no% = numéro d'objet de départ p% = parent du diaporama x%,y% = coin en haut à gauche du diaporama w%,h% = dimensions du diaporama Au retour, la variable globale diaporama_resultat% retourne l'identifiant du diaporama créé (1,2,...,20), ou -1 en cas d'erreur. LoadDiaporama(n%,d$)avec n% = numéro du diaporama (valeur retournée par CreateDiaporama) d$ = chemin vers un dossier Au retour, la variable diaporama_resultat% contient le nombre d'images du diaporama. Cette procédure charge toutes les images éligibles du dossier dont le chemin est spécifié. Pour déterminer le dossier, il suffit de sélectionner un fichier quelconque dans un dossier quelconque. Les lignes suivantes construisent le chemin: - Code:
-
open_dialog 11 : filter 11,"Images|*.jpg;*.bmp" d$ = file_name$(11) d$ = file_extract_path$(f$)
Voici le fichier diaporama_inc.bas: - Code:
-
' diaporama_inc.bas ' ' Ce module crée un objet Diaporama. On lui charge une liste* ' de fichiers image. L'objet présente une bande de vignettes ' en bas, ainsi que des boutons "<<","<",">" et ">>" pour ' déplacer la bande. Le reste de l'image est rempli par l'affichage ' d'une photo sélectionnée (par défaut, c'est la première). Un clic ' sur une des vignettes de la bande défilante affiche cette photo.
message "Ce module ne peut pas être exécuté directement." terminate
sub CreateDiaporama(no%,p%,x%,y%,w%,h%) if variable("diaporama_no%")=0 ' premier lancement: créer l'environement diaporama ' constantes dim diaporama_max% : diaporama_max% = 20 : ' nombre maxi dim diaporama_nobj% : diaporama_nobj% = 8 : ' nombre d'objets requis dim diaporama_aff% : diaporama_aff% = 0 : ' pour picture d'affichage: ' dim diaporama_prm% : diaporama_prm% = 1 : ' pour bouton "<<" dim diaporama_der% : diaporama_der% = 2 : ' pour bouton ">>" dim diaporama_prc% : diaporama_prc% = 3 : ' pour bouton "<" dim diaporama_sui% : diaporama_sui% = 4 : ' pour bouton ">" dim diaporama_film% : diaporama_film% = 5 : ' pour pellicule dim diaporama_list% : diaporama_list% = 6 : ' pour liste des noms de fichiers dim diaporama_img% : diaporama_img% = 7 : ' pour image temporaire ' variables dim diaporama_no%, diaporama_n% dim diaporama_resultat% dim diaporama_w%, diaporama_h%, diaporama_x% dim diaporama_liste%(diaporama_max%) : ' liste des objets Diaporama dim diaporama_dossier$(diaporama_max%) : ' liste des dossiers dim diaporama_nicons%(diaporama_max%) : ' nombre de vignettes dans la pellicule dim diaporama_acticon%(diaporama_max%) : ' vignette actuelle dans la pellicule dim diaporama_prmicon%(diaporama_max%) : ' première vignette dans la pellicule ' labels label diaporama_premier, diaporama_precedent label diaporama_suivant, diaporama_dernier label diaporama_click end_if dim_local i% diaporama_resultat% = -1 : ' création impossible ' tester si le nombre d'objets requis est disponible for i%=0 to diaporama_nobj%-1 if object_exists(no%+i%)=1 then exit_sub next i% diaporama_n% = diaporama_n% + 1 diaporama_liste%(diaporama_n%) = no% diaporama_w% = w% if diaporama_w%<256 then diaporama_w% = 256 if diaporama_h%<256 then diaporama_h% = 256 ' création des objets ' zone d'affichage picture no%+diaporama_aff% parent no%+diaporama_aff%,p% top no%+diaporama_aff%,y% : left no%+diaporama_aff%,x% width no%+diaporama_aff%,diaporama_w% : height no%+diaporama_aff%,diaporama_h% color no%+diaporama_aff%,65,155,210 stretch_on no%+diaporama_aff% ' bouton "premier" button no%+diaporama_prm% parent no%+diaporama_prm%,p% top no%+diaporama_prm%,y%+diaporama_h% left no%+diaporama_prm%,x% width no%+diaporama_prm%,18 : height no%+diaporama_prm%,64 caption no%+diaporama_prm%,"<<" on_click no%+diaporama_prm%,diaporama_premier font_bold no%+diaporama_prm% ' bouton "précédent" button no%+diaporama_prc% parent no%+diaporama_prc%,p% top no%+diaporama_prc%,y%+diaporama_h% left no%+diaporama_prc%,x%+width(no%+diaporama_prm%) width no%+diaporama_prc%,14 : height no%+diaporama_prc%,64 caption no%+diaporama_prc%,"<" on_click no%+diaporama_prc%,diaporama_precedent font_bold no%+diaporama_prc% ' bouton "dernier" button no%+diaporama_der% parent no%+diaporama_der%,p% top no%+diaporama_der%,y%+diaporama_h% left no%+diaporama_der%,x%+diaporama_w%-18 width no%+diaporama_der%,18 : height no%+diaporama_der%,64 caption no%+diaporama_der%,">>" font_bold no%+diaporama_der% on_click no%+diaporama_der%,diaporama_dernier ' bouton "suivant" button no%+diaporama_sui% parent no%+diaporama_sui%,p% top no%+diaporama_sui%,y%+diaporama_h% left no%+diaporama_sui%,left(no%+diaporama_der%)-14 width no%+diaporama_sui%,14 : height no%+diaporama_sui%,64 caption no%+diaporama_sui%,">" on_click no%+diaporama_sui%,diaporama_suivant font_bold no%+diaporama_sui% ' pellicule picture no%+diaporama_film% parent no%+diaporama_film%,p% top no%+diaporama_film%,y%+diaporama_h% left no%+diaporama_film%,x%+32 width no%+diaporama_film%,diaporama_w%-(32*2) : height no%+diaporama_film%,64 color no%+diaporama_film%,0,0,0 diaporama_nicons%(diaporama_n%) = int(width(no%+diaporama_film%)/64) on_click no%+diaporama_film%,diaporama_click ' liste des fichiers dlist no%+diaporama_list% ' image temporaire image no%+diaporama_img% diaporama_resultat% = diaporama_n% end_sub
sub LoadDiaporama(n%,d$) dim_local s$, actdir$, ext$, i%, ni%, res% diaporama_resultat% = -2 : ' chargement impossible if (n%<1) or (n%>diaporama_n%) then exit_sub s$ = trim$(d$) if len(s$)=0 then exit_sub if dir_exists(s$)=0 then exit_sub cursor_hourglass diaporama_liste%(n%) cursor_hourglass diaporama_liste%(n%)+diaporama_film% : display actdir$ = dir_current$ diaporama_dossier$(n%) = f$ clear diaporama_liste%(n%)+diaporama_list% ' charger la liste des noms de fichiers dir_change f$ f$ = file_find_first$ while f$<>"_" ext$ = lower$(file_extract_extension$(f$)) if (ext$=".jpg") or (ext$=".bmp") then item_add diaporama_liste%(n%)+diaporama_list%,f$ f$ = file_find_next$ end_while file_find_close dir_change actdir$ ni% = count(diaporama_liste%(n%)+diaporama_list%) if ni%=0 then exit_sub if ni%>diaporama_nicons%(n%) then ni% = diaporama_nicons%(n%) diaporama_acticon%(n%) = 1 : ' vignettes actuelle dans la pellicule diaporama_prmicon%(n%) = 1 : ' première vignette dans la pellicule for i% = 1 to ni% f$ = item_read$(diaporama_liste%(n%)+diaporama_list%,i%) res% = dll_call1("LoadAnyImageFile",adr(f$)) if i%=1 then file_load diaporama_liste%(n%)+diaporama_aff%,item_read$(diaporama_liste%(n%)+diaporama_list%,i%) res% = dll_call2("ResizePicture",64,64) clipboard_paste diaporama_liste%(n%)+diaporama_img% 2d_target_is diaporama_liste%(n%)+diaporama_film% 2d_image_paste diaporama_liste%(n%)+diaporama_img%,(i%-1)*64,0 next i% diaporama_resultat% = 0 cursor_default diaporama_liste%(n%) cursor_default diaporama_liste%(n%)+diaporama_film% end_sub
sub GetDiaporamaImageCount(n%) diaporama_resultat% = -2 : ' exécution impossible if (n%<1) or (n%>diaporama_n%) then exit_sub diaporama_resultat% = count(diaporama_liste%(n%)+diaporama_list%) end_sub
diaporama_premier: cursor_hourglass number_click : display IdentifyDiaporama(number_click,diaporama_prm%) DisplayDiaporamaPicture(diaporama_resultat%,1) cursor_default number_click return
diaporama_precedent: cursor_hourglass number_click : display IdentifyDiaporama(number_click,diaporama_prc%) DisplayDiaporamaPicture(diaporama_resultat%,diaporama_prmicon%(diaporama_resultat%)+diaporama_acticon%(diaporama_resultat%)-1-1) cursor_default number_click return
diaporama_suivant: cursor_hourglass number_click : display IdentifyDiaporama(number_click,diaporama_sui%) DisplayDiaporamaPicture(diaporama_resultat%,diaporama_prmicon%(diaporama_resultat%)+diaporama_acticon%(diaporama_resultat%)-1+1) cursor_default number_click return
diaporama_dernier: cursor_hourglass number_click : display IdentifyDiaporama(number_click,diaporama_der%) DisplayDiaporamaPicture(diaporama_resultat%,count(diaporama_liste%(diaporama_resultat%)+diaporama_list%)) cursor_default number_click return
sub IdentifyDiaporama(n%,type%) dim_local i% for diaporama_resultat%=1 to diaporama_n% if n%=(diaporama_liste%(diaporama_resultat%)+type%) then exit_sub next diaporama_resultat% diaporama_resultat% = 0 end_sub
sub DisplayDiaporamaPicture(n%,p%) dim_local nl%, ni%, na%, np%, nact%, i%, m%, res% nl% = diaporama_liste%(n%)+diaporama_list% if p%<1 then exit_sub if p%>count(nl%) then exit_sub ni% = diaporama_nicons%(n%) : ' nombre de vignettes dans la pellicule na% = diaporama_acticon%(n%) : ' vignette actuelle dans la pellicule np% = diaporama_prmicon%(n%) : ' première vignette dans la pellicule nact% = np% + na% - 1 if p%=nact% then exit_sub if p%<np% : ' image choisie à gauche de la pellicule ? color diaporama_liste%(n%)+diaporama_film%,0,0,0 for i%=1 to ni% f$ = item_read$(nl%,i%+p%-1) res% = dll_call1("LoadAnyImageFile",adr(f$)) if i%=1 then file_load diaporama_liste%(n%)+diaporama_aff%,f$ res% = dll_call2("ResizePicture",64,64) clipboard_paste diaporama_liste%(n%)+diaporama_img% 2d_target_is diaporama_liste%(n%)+diaporama_film% 2d_image_paste diaporama_liste%(n%)+diaporama_img%,(i%-1)*64,0 next i% diaporama_acticon%(n%) = 1 diaporama_prmicon%(n%) = p% exit_sub end_if if p%>=(np%+ni%) : ' image choisie à droite de la pellicule ? color diaporama_liste%(n%)+diaporama_film%,0,0,0 m% = p% - ni% + 1 for i%=1 to ni% f$ = item_read$(nl%,i%+m%-1) res% = dll_call1("LoadAnyImageFile",adr(f$)) if i%=ni% then file_load diaporama_liste%(n%)+diaporama_aff%,f$ res% = dll_call2("ResizePicture",64,64) clipboard_paste diaporama_liste%(n%)+diaporama_img% 2d_target_is diaporama_liste%(n%)+diaporama_film% 2d_image_paste diaporama_liste%(n%)+diaporama_img%,(i%-1)*64,0 next i% diaporama_acticon%(n%) = ni% diaporama_prmicon%(n%) = m% exit_sub end_if i% = p% - np% + 1 f$ = item_read$(nl%,p%) res% = dll_call1("LoadAnyImageFile",adr(f$)) file_load diaporama_liste%(n%)+diaporama_aff%,f$ res% = dll_call2("ResizePicture",64,64) clipboard_paste diaporama_liste%(n%)+diaporama_img% 2d_target_is diaporama_liste%(n%)+diaporama_film% 2d_image_paste diaporama_liste%(n%)+diaporama_img%,(i%-1)*64,0 diaporama_acticon%(n%) = i% end_sub
diaporama_click: cursor_hourglass number_click : display IdentifyDiaporama(number_click,diaporama_film%) diaporama_x% = mouse_x_left_down(diaporama_liste%(diaporama_resultat%)+diaporama_film%) diaporama_x% = int(diaporama_x%/64) if diaporama_x%<diaporama_nicons%(diaporama_resultat%) DisplayDiaporamaPicture(diaporama_resultat%,diaporama_prmicon%(diaporama_resultat%)+diaporama_x%) end_if cursor_default number_click return
Et voici un petit programme test_diaporama.bas qui affiche 2 diaporamas, avec leur bouton de chargement: - Code:
-
' test_diaporama.bas
dim f$
label charger_1, charger_2
dll_on "KGF.dll" open_dialog 11 : filter 11,"Images|*.jpg;*.bmp"
width 0,1000
button 1 : top 1,10 : left 1,150 : caption 1,"Charger" on_click 1,charger_1 button 2 : top 2,70 : left 2,650 : caption 2,"Charger" on_click 2,charger_2
CreateDiaporama(20,0,20,40,400,300) if diaporama_resultat%<0 then message "Erreur création 1"
CreateDiaporama(40,0,440,100,500,350) if diaporama_resultat%<0 then message "Erreur création 2"
end
charger_1: f$ = file_name$(11) f$ = file_extract_path$(f$) LoadDiaporama(1,f$) if diaporama_resultat%<0 then message "Erreur chargement 1" return charger_2: f$ = file_name$(11) f$ = file_extract_path$(f$) LoadDiaporama(2,f$) if diaporama_resultat%<0 then message "Erreur chargement 2" return
#INCLUDE "diaporama_inc.bas"
| |
| | | sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: Nouvel objet Diaporama Jeu 27 Fév 2014 - 0:57 | |
| Bonjours j'ai installé et testé Les formats un peu costauds ne passent pas( 8920 ko par exemple)
les images sont écrasées en hauteur pour la plupart Je trouve l’idée originale | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvel objet Diaporama Jeu 27 Fév 2014 - 1:20 | |
| Pour l'image proprement dite, il faut que tu adaptes w% et h% dans CreateDiaporama de sorte à correspondre plus ou moins au ratio largeur/hauteur de tes images. Le tassement, c'est l'effet du Stretch_On. Mais on ne peut pas s'en passer, car sinon, on ne visualise que le coin en haut à gauche de l'image.
Pour les vignettes, elles sont volontairement en 64x64 pixels. On a donc systématiquement une déformation, mais l'image reste identifiable, et un clic dessus affiche l'image en haut, selon le ratio largeur/hauteur donné par les paramètres w% et h%. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 27 Fév 2014 - 3:55 | |
| Il me semble que l' on (collectif des "forumeurs" ) avait déjà joué avec ce genre de problème. Il me semble que l' on prenait la dimmension la plus grande et que l' on jouait sur la taille du picture pour qu'il corresponde à un ratio convenable int((taille%*x)/100) de facon à ce que le stretch_on soit moins violent à l' oeil. Mais là je ne saurai dire où que c' est que j' ai mis cela, j' ai la tête dans les RichEdit en ce moment... Pour celui que celà intéresse, fouillez dans mon webdav, j' ai du cacher çà quelque part là dedans... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvel objet Diaporama Jeu 27 Fév 2014 - 9:59 | |
| C'est certes une possibilité, mais je perds alors la présentation graphique du diaporama, dont la zone d'affichage changerait au gré des images sélectionnées.
J'ai trouvé une autre solution que je suis en train d'adapter qu diaporama, et ce sera visible bientôt... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 27 Fév 2014 - 12:43 | |
| tu peux jouer avec deux pictures un en fond, fixe, et l' autre qui s' adapte et se replace en se centrant sur le premier.
...et un sprite sur un scene_2d ?... non ?... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvel objet Diaporama Jeu 27 Fév 2014 - 14:12 | |
| J'étais justement en train d'explorer cette idée. Voici le résultat, pour l'affichage de l'image sélectionnée sans déformation. J'ai désactivé la commande FILTER, et ainsi, le diaporama peut charger tout type d'image. test_diaporama.bas: - Code:
-
' test_diaporama.bas
dim f$
label charger_1, charger_2
dll_on "KGF.dll" open_dialog 11 : ' filter 11,"Images|*.jpg;*.bmp"
width 0,1000 : height 0,600
button 1 : top 1,10 : left 1,150 : caption 1,"Charger" on_click 1,charger_1 button 2 : top 2,70 : left 2,650 : caption 2,"Charger" on_click 2,charger_2
CreateDiaporama(20,0,20,40,400,300) if diaporama_resultat%<0 then message "Erreur création 1"
CreateDiaporama(40,0,440,100,500,350) if diaporama_resultat%<0 then message "Erreur création 2"
end
charger_1: f$ = file_name$(11) f$ = file_extract_path$(f$) LoadDiaporama(1,f$) if diaporama_resultat%<0 then message "Erreur chargement 1" return charger_2: f$ = file_name$(11) f$ = file_extract_path$(f$) LoadDiaporama(2,f$) if diaporama_resultat%<0 then message "Erreur chargement 2" return
#INCLUDE "diaporama_inc.bas"
et diaporama_inc.bas: - Code:
-
' diaporama_inc.bas ' ' Ce module crée un objet Diaporama. On lui charge une liste* ' de fichiers image. L'objet présente une bande de vignettes ' en bas, ainsi que des boutons "<<","<",">" et ">>" pour ' déplacer la bande. Le reste de l'image est rempli par l'affichage ' d'une photo sélectionnée (par défaut, c'est la première). Un clic ' sur une des vignettes de la bande défilante affiche cette photo.
message "Ce module ne peut pas être exécuté directement." terminate
sub CreateDiaporama(no%,p%,x%,y%,w%,h%) if variable("diaporama_no%")=0 ' premier lancement: créer l'environement diaporama ' constantes dim diaporama_max% : diaporama_max% = 20 : ' nombre maxi dim diaporama_nobj% : diaporama_nobj% = 9 : ' nombre d'objets requis dim diaporama_aff0% : diaporama_aff0% = 0 : ' pour fond d'affichage: ' dim diaporama_aff% : diaporama_aff% = 1 : ' pour picture d'affichage: ' dim diaporama_prm% : diaporama_prm% = 2 : ' pour bouton "<<" dim diaporama_der% : diaporama_der% = 3 : ' pour bouton ">>" dim diaporama_prc% : diaporama_prc% = 4 : ' pour bouton "<" dim diaporama_sui% : diaporama_sui% = 5 : ' pour bouton ">" dim diaporama_film% : diaporama_film% = 6 : ' pour pellicule dim diaporama_list% : diaporama_list% = 7 : ' pour liste des noms de fichiers dim diaporama_img% : diaporama_img% = 8 : ' pour image temporaire ' variables dim diaporama_no%, diaporama_n% dim diaporama_resultat% dim diaporama_xm% dim diaporama_liste%(diaporama_max%) : ' liste des objets Diaporama dim diaporama_x%(diaporama_max%) : ' position x des diaporamas dim diaporama_y%(diaporama_max%) : ' position y des diaporamas dim diaporama_w%(diaporama_max%) : ' largeur des diaporamas dim diaporama_h%(diaporama_max%) : ' hauteur des diaporamas dim diaporama_dossier$(diaporama_max%) : ' liste des dossiers dim diaporama_nicons%(diaporama_max%) : ' nombre de vignettes dans la pellicule dim diaporama_acticon%(diaporama_max%) : ' vignette actuelle dans la pellicule dim diaporama_prmicon%(diaporama_max%) : ' première vignette dans la pellicule ' labels label diaporama_premier, diaporama_precedent label diaporama_suivant, diaporama_dernier label diaporama_click end_if dim_local i% diaporama_resultat% = -1 : ' création impossible ' tester si le nombre d'objets requis est disponible for i%=0 to diaporama_nobj%-1 if object_exists(no%+i%)=1 then exit_sub next i% diaporama_n% = diaporama_n% + 1 diaporama_liste%(diaporama_n%) = no% diaporama_w%(diaporama_n%) = w% diaporama_h%(diaporama_n%) = h% diaporama_x%(diaporama_n%) = x% diaporama_y%(diaporama_n%) = y% if diaporama_w%(diaporama_n%)<256 then diaporama_w%(diaporama_n%) = 256 if diaporama_h%(diaporama_n%)<256 then diaporama_h%(diaporama_n%) = 256 ' création des objets ' zone d'affichage picture no%+diaporama_aff0% parent no%+diaporama_aff0%,p% top no%+diaporama_aff0%,diaporama_y%(diaporama_n%) : left no%+diaporama_aff0%,diaporama_x%(diaporama_n%) width no%+diaporama_aff0%,diaporama_w%(diaporama_n%) height no%+diaporama_aff0%,diaporama_h%(diaporama_n%) color no%+diaporama_aff0%,65,155,210 picture no%+diaporama_aff% parent no%+diaporama_aff%,p% top no%+diaporama_aff%,diaporama_y%(diaporama_n%) : left no%+diaporama_aff%,diaporama_x%(diaporama_n%) width no%+diaporama_aff%,diaporama_w%(diaporama_n%) height no%+diaporama_aff%,diaporama_h%(diaporama_n%) color no%+diaporama_aff%,65,155,210 stretch_on no%+diaporama_aff% ' bouton "premier" button no%+diaporama_prm% parent no%+diaporama_prm%,p% top no%+diaporama_prm%,diaporama_y%(diaporama_n%)+diaporama_h%(diaporama_n%) left no%+diaporama_prm%,diaporama_x%(diaporama_n%) width no%+diaporama_prm%,18 : height no%+diaporama_prm%,64 caption no%+diaporama_prm%,"<<" on_click no%+diaporama_prm%,diaporama_premier font_bold no%+diaporama_prm% ' bouton "précédent" button no%+diaporama_prc% parent no%+diaporama_prc%,p% top no%+diaporama_prc%,diaporama_y%(diaporama_n%)+diaporama_h%(diaporama_n%) left no%+diaporama_prc%,diaporama_x%(diaporama_n%)+width(no%+diaporama_prm%) width no%+diaporama_prc%,14 : height no%+diaporama_prc%,64 caption no%+diaporama_prc%,"<" on_click no%+diaporama_prc%,diaporama_precedent font_bold no%+diaporama_prc% ' bouton "dernier" button no%+diaporama_der% parent no%+diaporama_der%,p% top no%+diaporama_der%,diaporama_y%(diaporama_n%)+diaporama_h%(diaporama_n%) left no%+diaporama_der%,diaporama_x%(diaporama_n%)+diaporama_w%(diaporama_n%)-18 width no%+diaporama_der%,18 : height no%+diaporama_der%,64 caption no%+diaporama_der%,">>" font_bold no%+diaporama_der% on_click no%+diaporama_der%,diaporama_dernier ' bouton "suivant" button no%+diaporama_sui% parent no%+diaporama_sui%,p% top no%+diaporama_sui%,diaporama_y%(diaporama_n%)+diaporama_h%(diaporama_n%) left no%+diaporama_sui%,left(no%+diaporama_der%)-14 width no%+diaporama_sui%,14 : height no%+diaporama_sui%,64 caption no%+diaporama_sui%,">" on_click no%+diaporama_sui%,diaporama_suivant font_bold no%+diaporama_sui% ' pellicule picture no%+diaporama_film% parent no%+diaporama_film%,p% top no%+diaporama_film%,diaporama_y%(diaporama_n%)+diaporama_h%(diaporama_n%) left no%+diaporama_film%,diaporama_x%(diaporama_n%)+32 width no%+diaporama_film%,diaporama_w%(diaporama_n%)-(32*2) height no%+diaporama_film%,64 color no%+diaporama_film%,0,0,0 diaporama_nicons%(diaporama_n%) = int(width(no%+diaporama_film%)/64) on_click no%+diaporama_film%,diaporama_click ' liste des fichiers dlist no%+diaporama_list% ' image temporaire image no%+diaporama_img% diaporama_resultat% = diaporama_n% end_sub
sub LoadDiaporama(n%,d$) dim_local s$, actdir$, ext$, i%, ni%, res% diaporama_resultat% = -2 : ' chargement impossible if (n%<1) or (n%>diaporama_n%) then exit_sub s$ = trim$(d$) if len(s$)=0 then exit_sub if dir_exists(s$)=0 then exit_sub cursor_hourglass diaporama_liste%(n%) cursor_hourglass diaporama_liste%(n%)+diaporama_film% : display actdir$ = dir_current$ diaporama_dossier$(n%) = f$ clear diaporama_liste%(n%)+diaporama_list% ' charger la liste des noms de fichiers dir_change f$ f$ = file_find_first$ while f$<>"_" ext$ = lower$(file_extract_extension$(f$)) if (ext$=".jpg") or (ext$=".bmp") then item_add diaporama_liste%(n%)+diaporama_list%,f$ f$ = file_find_next$ end_while file_find_close dir_change actdir$ ni% = count(diaporama_liste%(n%)+diaporama_list%) if ni%=0 then exit_sub if ni%>diaporama_nicons%(n%) then ni% = diaporama_nicons%(n%) diaporama_acticon%(n%) = 1 : ' vignettes actuelle dans la pellicule diaporama_prmicon%(n%) = 1 : ' première vignette dans la pellicule for i% = 1 to ni% f$ = item_read$(diaporama_liste%(n%)+diaporama_list%,i%) res% = dll_call1("LoadAnyImageFile",adr(f$)) if i%=1 AdjustDiaporama(n%) clipboard_paste diaporama_liste%(n%)+diaporama_aff% end_if res% = dll_call2("ResizePicture",64,64) clipboard_paste diaporama_liste%(n%)+diaporama_img% 2d_target_is diaporama_liste%(n%)+diaporama_film% 2d_image_paste diaporama_liste%(n%)+diaporama_img%,(i%-1)*64,0 next i% diaporama_resultat% = 0 cursor_default diaporama_liste%(n%) cursor_default diaporama_liste%(n%)+diaporama_film% end_sub
sub AdjustDiaporama(n%) dim_local w%, h%, res%, w1%, h1% w% = dll_call0("GetClipboardPictureWidth") h% = dll_call0("GetClipboardPictureHeight") if w%>h% h1% = int(Diaporama_h%(n%)*(h%/w%)) w1% = Diaporama_w%(n%) else w1% = int(Diaporama_w%(n%)*(w%/h%)) h1% = Diaporama_h%(n%) end_if width diaporama_liste%(n%)+Diaporama_aff%,w1% height diaporama_liste%(n%)+Diaporama_aff%,h1% top diaporama_liste%(n%)+Diaporama_aff%,diaporama_y%(n%)+int((Diaporama_h%(n%)-h1%)/2) left diaporama_liste%(n%)+Diaporama_aff%,diaporama_x%(n%)+int((Diaporama_w%(n%)-w1%)/2) res% = dll_call2("ResizePicture",w1%,h1%) end_sub
sub GetDiaporamaImageCount(n%) diaporama_resultat% = -2 : ' exécution impossible if (n%<1) or (n%>diaporama_n%) then exit_sub diaporama_resultat% = count(diaporama_liste%(n%)+diaporama_list%) end_sub
diaporama_premier: cursor_hourglass number_click : display IdentifyDiaporama(number_click,diaporama_prm%) DisplayDiaporamaPicture(diaporama_resultat%,1) cursor_default number_click return
diaporama_precedent: cursor_hourglass number_click : display IdentifyDiaporama(number_click,diaporama_prc%) DisplayDiaporamaPicture(diaporama_resultat%,diaporama_prmicon%(diaporama_resultat%)+diaporama_acticon%(diaporama_resultat%)-1-1) cursor_default number_click return
diaporama_suivant: cursor_hourglass number_click : display IdentifyDiaporama(number_click,diaporama_sui%) DisplayDiaporamaPicture(diaporama_resultat%,diaporama_prmicon%(diaporama_resultat%)+diaporama_acticon%(diaporama_resultat%)-1+1) cursor_default number_click return
diaporama_dernier: cursor_hourglass number_click : display IdentifyDiaporama(number_click,diaporama_der%) DisplayDiaporamaPicture(diaporama_resultat%,count(diaporama_liste%(diaporama_resultat%)+diaporama_list%)) cursor_default number_click return
sub IdentifyDiaporama(n%,type%) dim_local i% for diaporama_resultat%=1 to diaporama_n% if n%=(diaporama_liste%(diaporama_resultat%)+type%) then exit_sub next diaporama_resultat% diaporama_resultat% = 0 end_sub
sub DisplayDiaporamaPicture(n%,p%) dim_local nl%, ni%, na%, np%, nact%, i%, m%, res% nl% = diaporama_liste%(n%)+diaporama_list% if p%<1 then exit_sub if p%>count(nl%) then exit_sub ni% = diaporama_nicons%(n%) : ' nombre de vignettes dans la pellicule na% = diaporama_acticon%(n%) : ' vignette actuelle dans la pellicule np% = diaporama_prmicon%(n%) : ' première vignette dans la pellicule nact% = np% + na% - 1 if p%=nact% then exit_sub if p%<np% : ' image choisie à gauche de la pellicule ? color diaporama_liste%(n%)+diaporama_film%,0,0,0 for i%=1 to ni% f$ = item_read$(nl%,i%+p%-1) res% = dll_call1("LoadAnyImageFile",adr(f$)) if i%=1 AdjustDiaporama(n%) clipboard_paste diaporama_liste%(n%)+diaporama_aff% end_if res% = dll_call2("ResizePicture",64,64) clipboard_paste diaporama_liste%(n%)+diaporama_img% 2d_target_is diaporama_liste%(n%)+diaporama_film% 2d_image_paste diaporama_liste%(n%)+diaporama_img%,(i%-1)*64,0 next i% diaporama_acticon%(n%) = 1 diaporama_prmicon%(n%) = p% exit_sub end_if if p%>=(np%+ni%) : ' image choisie à droite de la pellicule ? color diaporama_liste%(n%)+diaporama_film%,0,0,0 m% = p% - ni% + 1 for i%=1 to ni% f$ = item_read$(nl%,i%+m%-1) res% = dll_call1("LoadAnyImageFile",adr(f$)) if i%=ni% AdjustDiaporama(n%) clipboard_paste diaporama_liste%(n%)+diaporama_aff% end_if res% = dll_call2("ResizePicture",64,64) clipboard_paste diaporama_liste%(n%)+diaporama_img% 2d_target_is diaporama_liste%(n%)+diaporama_film% 2d_image_paste diaporama_liste%(n%)+diaporama_img%,(i%-1)*64,0 next i% diaporama_acticon%(n%) = ni% diaporama_prmicon%(n%) = m% exit_sub end_if i% = p% - np% + 1 f$ = item_read$(nl%,p%) res% = dll_call1("LoadAnyImageFile",adr(f$)) AdjustDiaporama(n%) clipboard_paste diaporama_liste%(n%)+diaporama_aff% diaporama_acticon%(n%) = i% end_sub
diaporama_click: cursor_hourglass number_click : display IdentifyDiaporama(number_click,diaporama_film%) diaporama_xm% = mouse_x_left_down(diaporama_liste%(diaporama_resultat%)+diaporama_film%) diaporama_xm% = int(diaporama_xm%/64) if diaporama_xm%<diaporama_nicons%(diaporama_resultat%) DisplayDiaporamaPicture(diaporama_resultat%,diaporama_prmicon%(diaporama_resultat%)+diaporama_xm%) end_if cursor_default number_click return
En plus, je l'ai accéléré légèrement. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Nouvel objet Diaporama Jeu 27 Fév 2014 - 15:00 | |
| Un essai vite fait: toutes les images de la fenêtre du haut sont en 'cinémascope', étirées en largeur avec des bandes vides haut et bas, et en bas (pellicule) elles sont rétrécies en carré... (mes images font 2650x1920).
Je ne comprends pas l'utilité de cet affichage dupliqué, un peu plus grand et décalé vers le bas pour celui de droite ?
Un petit séparateur (même une seule ligne) serait le bienvenu pour distinguer les images du bas les unes des autres, tout est collé.
Dernière édition par JL35 le Jeu 27 Fév 2014 - 15:08, édité 1 fois | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvel objet Diaporama Jeu 27 Fév 2014 - 15:06 | |
| ???????? Voici ce que ça donne chez moi: [img] [/img] As-tu rechargé test_diaporama.bas et diaporama_inc.bas sur mon post juste ci-dessus ? | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Nouvel objet Diaporama Jeu 27 Fév 2014 - 15:10 | |
| On s'est c9roisés, mais oui, j'ai bien pris le dernier code... on ne s'en rend pas bien compte ici, mais je t'assure que les images sont étirées. Les personnages sont tassés en hauteur. Edit: d'ailleurs on voit bien (sur ton exemple également), j'ai mesuré, que les images sont affichées dans le rapport 1,9 alors qu'elles sont en réalité en 1,33 (4/3)
Dernière édition par JL35 le Jeu 27 Fév 2014 - 15:18, édité 1 fois | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvel objet Diaporama Jeu 27 Fév 2014 - 15:15 | |
| Le programme test_diaporama affiche deux diaporamas, mais juste pour montrer qu'on peut en faire plusieurs. On peut évidemment charger des listes différentes d'images, dans chacun de ces diaporamas.
C'est vrai: je n'ai pas fait de séparateur entre les vignettes de la pellicule, ni entre la zond d'affichage et la pellicule. Mais c'est une idée - je vais creuser ça. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvel objet Diaporama Jeu 27 Fév 2014 - 15:20 | |
| Voici une version de diaporama_inc.bas, avec une séparation entre la zone d'affichage et la pellicule, ainsi qu'entre les vignettes de la pellicule: - Code:
-
' diaporama_inc.bas ' ' Ce module crée un objet Diaporama. On lui charge une liste* ' de fichiers image. L'objet présente une bande de vignettes ' en bas, ainsi que des boutons "<<","<",">" et ">>" pour ' déplacer la bande. Le reste de l'image est rempli par l'affichage ' d'une photo sélectionnée (par défaut, c'est la première). Un clic ' sur une des vignettes de la bande défilante affiche cette photo.
message "Ce module ne peut pas être exécuté directement." terminate
sub CreateDiaporama(no%,p%,x%,y%,w%,h%) if variable("diaporama_no%")=0 ' premier lancement: créer l'environement diaporama ' constantes dim diaporama_max% : diaporama_max% = 20 : ' nombre maxi dim diaporama_nobj% : diaporama_nobj% = 9 : ' nombre d'objets requis dim diaporama_aff0% : diaporama_aff0% = 0 : ' pour fond d'affichage: ' dim diaporama_aff% : diaporama_aff% = 1 : ' pour picture d'affichage: ' dim diaporama_prm% : diaporama_prm% = 2 : ' pour bouton "<<" dim diaporama_der% : diaporama_der% = 3 : ' pour bouton ">>" dim diaporama_prc% : diaporama_prc% = 4 : ' pour bouton "<" dim diaporama_sui% : diaporama_sui% = 5 : ' pour bouton ">" dim diaporama_film% : diaporama_film% = 6 : ' pour pellicule dim diaporama_list% : diaporama_list% = 7 : ' pour liste des noms de fichiers dim diaporama_img% : diaporama_img% = 8 : ' pour image temporaire ' variables dim diaporama_no%, diaporama_n% dim diaporama_resultat% dim diaporama_xm% dim diaporama_liste%(diaporama_max%) : ' liste des objets Diaporama dim diaporama_x%(diaporama_max%) : ' position x des diaporamas dim diaporama_y%(diaporama_max%) : ' position y des diaporamas dim diaporama_w%(diaporama_max%) : ' largeur des diaporamas dim diaporama_h%(diaporama_max%) : ' hauteur des diaporamas dim diaporama_dossier$(diaporama_max%) : ' liste des dossiers dim diaporama_nicons%(diaporama_max%) : ' nombre de vignettes dans la pellicule dim diaporama_acticon%(diaporama_max%) : ' vignette actuelle dans la pellicule dim diaporama_prmicon%(diaporama_max%) : ' première vignette dans la pellicule ' labels label diaporama_premier, diaporama_precedent label diaporama_suivant, diaporama_dernier label diaporama_click end_if dim_local i% diaporama_resultat% = -1 : ' création impossible ' tester si le nombre d'objets requis est disponible for i%=0 to diaporama_nobj%-1 if object_exists(no%+i%)=1 then exit_sub next i% diaporama_n% = diaporama_n% + 1 diaporama_liste%(diaporama_n%) = no% diaporama_w%(diaporama_n%) = w% diaporama_h%(diaporama_n%) = h% diaporama_x%(diaporama_n%) = x% diaporama_y%(diaporama_n%) = y% if diaporama_w%(diaporama_n%)<256 then diaporama_w%(diaporama_n%) = 256 if diaporama_h%(diaporama_n%)<256 then diaporama_h%(diaporama_n%) = 256 ' création des objets ' zone d'affichage picture no%+diaporama_aff0% parent no%+diaporama_aff0%,p% top no%+diaporama_aff0%,diaporama_y%(diaporama_n%) : left no%+diaporama_aff0%,diaporama_x%(diaporama_n%) width no%+diaporama_aff0%,diaporama_w%(diaporama_n%) height no%+diaporama_aff0%,diaporama_h%(diaporama_n%) color no%+diaporama_aff0%,65,155,210 picture no%+diaporama_aff% parent no%+diaporama_aff%,p% top no%+diaporama_aff%,diaporama_y%(diaporama_n%) : left no%+diaporama_aff%,diaporama_x%(diaporama_n%) width no%+diaporama_aff%,diaporama_w%(diaporama_n%) height no%+diaporama_aff%,diaporama_h%(diaporama_n%) color no%+diaporama_aff%,65,155,210 stretch_on no%+diaporama_aff% ' bouton "premier" button no%+diaporama_prm% parent no%+diaporama_prm%,p% top no%+diaporama_prm%,diaporama_y%(diaporama_n%)+diaporama_h%(diaporama_n%) left no%+diaporama_prm%,diaporama_x%(diaporama_n%) width no%+diaporama_prm%,18 : height no%+diaporama_prm%,64 caption no%+diaporama_prm%,"<<" on_click no%+diaporama_prm%,diaporama_premier font_bold no%+diaporama_prm% ' bouton "précédent" button no%+diaporama_prc% parent no%+diaporama_prc%,p% top no%+diaporama_prc%,diaporama_y%(diaporama_n%)+diaporama_h%(diaporama_n%) left no%+diaporama_prc%,diaporama_x%(diaporama_n%)+width(no%+diaporama_prm%) width no%+diaporama_prc%,14 : height no%+diaporama_prc%,64 caption no%+diaporama_prc%,"<" on_click no%+diaporama_prc%,diaporama_precedent font_bold no%+diaporama_prc% ' bouton "dernier" button no%+diaporama_der% parent no%+diaporama_der%,p% top no%+diaporama_der%,diaporama_y%(diaporama_n%)+diaporama_h%(diaporama_n%) left no%+diaporama_der%,diaporama_x%(diaporama_n%)+diaporama_w%(diaporama_n%)-18 width no%+diaporama_der%,18 : height no%+diaporama_der%,64 caption no%+diaporama_der%,">>" font_bold no%+diaporama_der% on_click no%+diaporama_der%,diaporama_dernier ' bouton "suivant" button no%+diaporama_sui% parent no%+diaporama_sui%,p% top no%+diaporama_sui%,diaporama_y%(diaporama_n%)+diaporama_h%(diaporama_n%) left no%+diaporama_sui%,left(no%+diaporama_der%)-14 width no%+diaporama_sui%,14 : height no%+diaporama_sui%,64 caption no%+diaporama_sui%,">" on_click no%+diaporama_sui%,diaporama_suivant font_bold no%+diaporama_sui% ' pellicule picture no%+diaporama_film% parent no%+diaporama_film%,p% top no%+diaporama_film%,diaporama_y%(diaporama_n%)+diaporama_h%(diaporama_n%) left no%+diaporama_film%,diaporama_x%(diaporama_n%)+32 width no%+diaporama_film%,diaporama_w%(diaporama_n%)-(32*2) height no%+diaporama_film%,64 color no%+diaporama_film%,0,0,0 diaporama_nicons%(diaporama_n%) = int(width(no%+diaporama_film%)/64) on_click no%+diaporama_film%,diaporama_click ' liste des fichiers dlist no%+diaporama_list% ' image temporaire image no%+diaporama_img% diaporama_resultat% = diaporama_n% end_sub
sub LoadDiaporama(n%,d$) dim_local s$, actdir$, ext$, i%, ni%, res% diaporama_resultat% = -2 : ' chargement impossible if (n%<1) or (n%>diaporama_n%) then exit_sub s$ = trim$(d$) if len(s$)=0 then exit_sub if dir_exists(s$)=0 then exit_sub cursor_hourglass diaporama_liste%(n%) cursor_hourglass diaporama_liste%(n%)+diaporama_film% : display actdir$ = dir_current$ diaporama_dossier$(n%) = f$ clear diaporama_liste%(n%)+diaporama_list% ' charger la liste des noms de fichiers dir_change f$ f$ = file_find_first$ while f$<>"_" ext$ = lower$(file_extract_extension$(f$)) if (ext$=".jpg") or (ext$=".bmp") then item_add diaporama_liste%(n%)+diaporama_list%,f$ f$ = file_find_next$ end_while file_find_close dir_change actdir$ ni% = count(diaporama_liste%(n%)+diaporama_list%) if ni%=0 then exit_sub if ni%>diaporama_nicons%(n%) then ni% = diaporama_nicons%(n%) diaporama_acticon%(n%) = 1 : ' vignettes actuelle dans la pellicule diaporama_prmicon%(n%) = 1 : ' première vignette dans la pellicule for i% = 1 to ni% f$ = item_read$(diaporama_liste%(n%)+diaporama_list%,i%) res% = dll_call1("LoadAnyImageFile",adr(f$)) if i%=1 AdjustDiaporama(n%) clipboard_paste diaporama_liste%(n%)+diaporama_aff% end_if res% = dll_call2("ResizePicture",60,60) clipboard_paste diaporama_liste%(n%)+diaporama_img% 2d_target_is diaporama_liste%(n%)+diaporama_film% 2d_image_paste diaporama_liste%(n%)+diaporama_img%,(i%-1)*64+2,2 next i% diaporama_resultat% = 0 cursor_default diaporama_liste%(n%) cursor_default diaporama_liste%(n%)+diaporama_film% end_sub
sub AdjustDiaporama(n%) dim_local w%, h%, res%, w1%, h1% w% = dll_call0("GetClipboardPictureWidth") h% = dll_call0("GetClipboardPictureHeight") if w%>h% h1% = int(Diaporama_h%(n%)*(h%/w%)) w1% = Diaporama_w%(n%) else w1% = int(Diaporama_w%(n%)*(w%/h%)) h1% = Diaporama_h%(n%) end_if width diaporama_liste%(n%)+Diaporama_aff%,w1% height diaporama_liste%(n%)+Diaporama_aff%,h1% top diaporama_liste%(n%)+Diaporama_aff%,diaporama_y%(n%)+int((Diaporama_h%(n%)-h1%)/2) left diaporama_liste%(n%)+Diaporama_aff%,diaporama_x%(n%)+int((Diaporama_w%(n%)-w1%)/2) res% = dll_call2("ResizePicture",w1%,h1%) end_sub
sub GetDiaporamaImageCount(n%) diaporama_resultat% = -2 : ' exécution impossible if (n%<1) or (n%>diaporama_n%) then exit_sub diaporama_resultat% = count(diaporama_liste%(n%)+diaporama_list%) end_sub
diaporama_premier: cursor_hourglass number_click : display IdentifyDiaporama(number_click,diaporama_prm%) DisplayDiaporamaPicture(diaporama_resultat%,1) cursor_default number_click return
diaporama_precedent: cursor_hourglass number_click : display IdentifyDiaporama(number_click,diaporama_prc%) DisplayDiaporamaPicture(diaporama_resultat%,diaporama_prmicon%(diaporama_resultat%)+diaporama_acticon%(diaporama_resultat%)-1-1) cursor_default number_click return
diaporama_suivant: cursor_hourglass number_click : display IdentifyDiaporama(number_click,diaporama_sui%) DisplayDiaporamaPicture(diaporama_resultat%,diaporama_prmicon%(diaporama_resultat%)+diaporama_acticon%(diaporama_resultat%)-1+1) cursor_default number_click return
diaporama_dernier: cursor_hourglass number_click : display IdentifyDiaporama(number_click,diaporama_der%) DisplayDiaporamaPicture(diaporama_resultat%,count(diaporama_liste%(diaporama_resultat%)+diaporama_list%)) cursor_default number_click return
sub IdentifyDiaporama(n%,type%) dim_local i% for diaporama_resultat%=1 to diaporama_n% if n%=(diaporama_liste%(diaporama_resultat%)+type%) then exit_sub next diaporama_resultat% diaporama_resultat% = 0 end_sub
sub DisplayDiaporamaPicture(n%,p%) dim_local nl%, ni%, na%, np%, nact%, i%, m%, res% nl% = diaporama_liste%(n%)+diaporama_list% if p%<1 then exit_sub if p%>count(nl%) then exit_sub ni% = diaporama_nicons%(n%) : ' nombre de vignettes dans la pellicule na% = diaporama_acticon%(n%) : ' vignette actuelle dans la pellicule np% = diaporama_prmicon%(n%) : ' première vignette dans la pellicule nact% = np% + na% - 1 if p%=nact% then exit_sub if p%<np% : ' image choisie à gauche de la pellicule ? color diaporama_liste%(n%)+diaporama_film%,0,0,0 for i%=1 to ni% f$ = item_read$(nl%,i%+p%-1) res% = dll_call1("LoadAnyImageFile",adr(f$)) if i%=1 AdjustDiaporama(n%) clipboard_paste diaporama_liste%(n%)+diaporama_aff% end_if res% = dll_call2("ResizePicture",60,60) clipboard_paste diaporama_liste%(n%)+diaporama_img% 2d_target_is diaporama_liste%(n%)+diaporama_film% 2d_image_paste diaporama_liste%(n%)+diaporama_img%,(i%-1)*64+2,2 next i% diaporama_acticon%(n%) = 1 diaporama_prmicon%(n%) = p% exit_sub end_if if p%>=(np%+ni%) : ' image choisie à droite de la pellicule ? color diaporama_liste%(n%)+diaporama_film%,0,0,0 m% = p% - ni% + 1 for i%=1 to ni% f$ = item_read$(nl%,i%+m%-1) res% = dll_call1("LoadAnyImageFile",adr(f$)) if i%=ni% AdjustDiaporama(n%) clipboard_paste diaporama_liste%(n%)+diaporama_aff% end_if res% = dll_call2("ResizePicture",60,60) clipboard_paste diaporama_liste%(n%)+diaporama_img% 2d_target_is diaporama_liste%(n%)+diaporama_film% 2d_image_paste diaporama_liste%(n%)+diaporama_img%,(i%-1)*64+2,2 next i% diaporama_acticon%(n%) = ni% diaporama_prmicon%(n%) = m% exit_sub end_if i% = p% - np% + 1 f$ = item_read$(nl%,p%) res% = dll_call1("LoadAnyImageFile",adr(f$)) AdjustDiaporama(n%) clipboard_paste diaporama_liste%(n%)+diaporama_aff% diaporama_acticon%(n%) = i% end_sub
diaporama_click: cursor_hourglass number_click : display IdentifyDiaporama(number_click,diaporama_film%) diaporama_xm% = mouse_x_left_down(diaporama_liste%(diaporama_resultat%)+diaporama_film%) diaporama_xm% = int(diaporama_xm%/64) if diaporama_xm%<diaporama_nicons%(diaporama_resultat%) DisplayDiaporamaPicture(diaporama_resultat%,diaporama_prmicon%(diaporama_resultat%)+diaporama_xm%) end_if cursor_default number_click return
Finalement, c'était simple... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Nouvel objet Diaporama Jeu 27 Fév 2014 - 15:31 | |
| Effectivement, ça sépare bien les vignettes, c'est plus clair.
Mais je répète que le format d'image affiché (proportions) n'est pas correct, elles sont bien étirées en largeur. Ce format d'image affiché (rapport environ 1,9) ne correspond à aucun format classique, qui est en général 4/3 (1,33), ou à la rigueur 16/9 (1,77), mais là c'est du cinémascope.
Les images sont étirées en largeur en haut, et tassées en largeur en bas, donc déformées (je n'ai pas regardé le code, pour le moment je constate, c'est tout). | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvel objet Diaporama Jeu 27 Fév 2014 - 15:47 | |
| Je vois ce que tu veux dire. Je corrige... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvel objet Diaporama Jeu 27 Fév 2014 - 16:15 | |
| J'ai corrigé le dimensionnement dans diaporama_inc.bas. En même temps, j'ai rendu paramétrable la taille des vignettes et la largeur de la séparation entre vignettes et vers la zone d'affichage. Ce sont deix variables dans la zone "constantes" de CreateDiaporama: - Code:
-
dim diaporama_isiz% : diaporama_isiz% = 64 : ' taille des icônes dim diaporama_ssiz% : diaporama_ssiz% = 2 : ' taille des séparations
Voici diamorama_inc.bas: - Code:
-
' diaporama_inc.bas ' ' Ce module crée un objet Diaporama. On lui charge une liste* ' de fichiers image. L'objet présente une bande de vignettes ' en bas, ainsi que des boutons "<<","<",">" et ">>" pour ' déplacer la bande. Le reste de l'image est rempli par l'affichage ' d'une photo sélectionnée (par défaut, c'est la première). Un clic ' sur une des vignettes de la bande défilante affiche cette photo.
message "Ce module ne peut pas être exécuté directement." terminate
sub CreateDiaporama(no%,p%,x%,y%,w%,h%) if variable("diaporama_no%")=0 ' premier lancement: créer l'environement diaporama ' constantes dim diaporama_max% : diaporama_max% = 20 : ' nombre maxi dim diaporama_nobj% : diaporama_nobj% = 9 : ' nombre d'objets requis dim diaporama_aff0% : diaporama_aff0% = 0 : ' pour fond d'affichage: ' dim diaporama_aff% : diaporama_aff% = 1 : ' pour picture d'affichage: ' dim diaporama_prm% : diaporama_prm% = 2 : ' pour bouton "<<" dim diaporama_der% : diaporama_der% = 3 : ' pour bouton ">>" dim diaporama_prc% : diaporama_prc% = 4 : ' pour bouton "<" dim diaporama_sui% : diaporama_sui% = 5 : ' pour bouton ">" dim diaporama_film% : diaporama_film% = 6 : ' pour pellicule dim diaporama_list% : diaporama_list% = 7 : ' pour liste des noms de fichiers dim diaporama_img% : diaporama_img% = 8 : ' pour image temporaire dim diaporama_isiz% : diaporama_isiz% = 64 : ' taille des icônes dim diaporama_ssiz% : diaporama_ssiz% = 2 : ' taille des séparations ' variables dim diaporama_no%, diaporama_n% dim diaporama_resultat% dim diaporama_xm% dim diaporama_liste%(diaporama_max%) : ' liste des objets Diaporama dim diaporama_x%(diaporama_max%) : ' position x des diaporamas dim diaporama_y%(diaporama_max%) : ' position y des diaporamas dim diaporama_w%(diaporama_max%) : ' largeur des diaporamas dim diaporama_h%(diaporama_max%) : ' hauteur des diaporamas dim diaporama_dossier$(diaporama_max%) : ' liste des dossiers dim diaporama_nicons%(diaporama_max%) : ' nombre de vignettes dans la pellicule dim diaporama_acticon%(diaporama_max%) : ' vignette actuelle dans la pellicule dim diaporama_prmicon%(diaporama_max%) : ' première vignette dans la pellicule ' labels label diaporama_premier, diaporama_precedent label diaporama_suivant, diaporama_dernier label diaporama_click end_if dim_local i% diaporama_resultat% = -1 : ' création impossible ' tester si le nombre d'objets requis est disponible for i%=0 to diaporama_nobj%-1 if object_exists(no%+i%)=1 then exit_sub next i% diaporama_n% = diaporama_n% + 1 diaporama_liste%(diaporama_n%) = no% diaporama_w%(diaporama_n%) = w% diaporama_h%(diaporama_n%) = h% diaporama_x%(diaporama_n%) = x% diaporama_y%(diaporama_n%) = y% if diaporama_w%(diaporama_n%)<256 then diaporama_w%(diaporama_n%) = 256 if diaporama_h%(diaporama_n%)<256 then diaporama_h%(diaporama_n%) = 256 ' création des objets ' zone d'affichage picture no%+diaporama_aff0% parent no%+diaporama_aff0%,p% top no%+diaporama_aff0%,diaporama_y%(diaporama_n%) : left no%+diaporama_aff0%,diaporama_x%(diaporama_n%) width no%+diaporama_aff0%,diaporama_w%(diaporama_n%) height no%+diaporama_aff0%,diaporama_h%(diaporama_n%) color no%+diaporama_aff0%,65,155,210 picture no%+diaporama_aff% parent no%+diaporama_aff%,p% top no%+diaporama_aff%,diaporama_y%(diaporama_n%) : left no%+diaporama_aff%,diaporama_x%(diaporama_n%) width no%+diaporama_aff%,diaporama_w%(diaporama_n%) height no%+diaporama_aff%,diaporama_h%(diaporama_n%) color no%+diaporama_aff%,65,155,210 stretch_on no%+diaporama_aff% ' bouton "premier" button no%+diaporama_prm% parent no%+diaporama_prm%,p% top no%+diaporama_prm%,diaporama_y%(diaporama_n%)+diaporama_h%(diaporama_n%) left no%+diaporama_prm%,diaporama_x%(diaporama_n%) width no%+diaporama_prm%,18 : height no%+diaporama_prm%,diaporama_isiz% caption no%+diaporama_prm%,"<<" on_click no%+diaporama_prm%,diaporama_premier font_bold no%+diaporama_prm% ' bouton "précédent" button no%+diaporama_prc% parent no%+diaporama_prc%,p% top no%+diaporama_prc%,diaporama_y%(diaporama_n%)+diaporama_h%(diaporama_n%) left no%+diaporama_prc%,diaporama_x%(diaporama_n%)+width(no%+diaporama_prm%) width no%+diaporama_prc%,14 : height no%+diaporama_prc%,diaporama_isiz% caption no%+diaporama_prc%,"<" on_click no%+diaporama_prc%,diaporama_precedent font_bold no%+diaporama_prc% ' bouton "dernier" button no%+diaporama_der% parent no%+diaporama_der%,p% top no%+diaporama_der%,diaporama_y%(diaporama_n%)+diaporama_h%(diaporama_n%) left no%+diaporama_der%,diaporama_x%(diaporama_n%)+diaporama_w%(diaporama_n%)-18 width no%+diaporama_der%,18 : height no%+diaporama_der%,diaporama_isiz% caption no%+diaporama_der%,">>" font_bold no%+diaporama_der% on_click no%+diaporama_der%,diaporama_dernier ' bouton "suivant" button no%+diaporama_sui% parent no%+diaporama_sui%,p% top no%+diaporama_sui%,diaporama_y%(diaporama_n%)+diaporama_h%(diaporama_n%) left no%+diaporama_sui%,left(no%+diaporama_der%)-14 width no%+diaporama_sui%,14 : height no%+diaporama_sui%,diaporama_isiz% caption no%+diaporama_sui%,">" on_click no%+diaporama_sui%,diaporama_suivant font_bold no%+diaporama_sui% ' pellicule picture no%+diaporama_film% parent no%+diaporama_film%,p% top no%+diaporama_film%,diaporama_y%(diaporama_n%)+diaporama_h%(diaporama_n%) left no%+diaporama_film%,diaporama_x%(diaporama_n%)+32 width no%+diaporama_film%,diaporama_w%(diaporama_n%)-64 height no%+diaporama_film%,diaporama_isiz% color no%+diaporama_film%,0,0,0 diaporama_nicons%(diaporama_n%) = int(width(no%+diaporama_film%)/diaporama_isiz%) on_click no%+diaporama_film%,diaporama_click ' liste des fichiers dlist no%+diaporama_list% ' image temporaire image no%+diaporama_img% diaporama_resultat% = diaporama_n% end_sub
sub LoadDiaporama(n%,d$) dim_local s$, actdir$, ext$, i%, ni%, res% diaporama_resultat% = -2 : ' chargement impossible if (n%<1) or (n%>diaporama_n%) then exit_sub s$ = trim$(d$) if len(s$)=0 then exit_sub if dir_exists(s$)=0 then exit_sub cursor_hourglass diaporama_liste%(n%) cursor_hourglass diaporama_liste%(n%)+diaporama_film% : display actdir$ = dir_current$ diaporama_dossier$(n%) = f$ clear diaporama_liste%(n%)+diaporama_list% ' charger la liste des noms de fichiers dir_change f$ f$ = file_find_first$ while f$<>"_" ext$ = lower$(file_extract_extension$(f$)) if (ext$=".jpg") or (ext$=".bmp") then item_add diaporama_liste%(n%)+diaporama_list%,f$ f$ = file_find_next$ end_while file_find_close dir_change actdir$ ni% = count(diaporama_liste%(n%)+diaporama_list%) if ni%=0 then exit_sub if ni%>diaporama_nicons%(n%) then ni% = diaporama_nicons%(n%) diaporama_acticon%(n%) = 1 : ' vignettes actuelle dans la pellicule diaporama_prmicon%(n%) = 1 : ' première vignette dans la pellicule for i% = 1 to ni% f$ = item_read$(diaporama_liste%(n%)+diaporama_list%,i%) res% = dll_call1("LoadAnyImageFile",adr(f$)) if i%=1 AdjustDiaporama(n%) clipboard_paste diaporama_liste%(n%)+diaporama_aff% end_if res% = dll_call2("ResizePicture",diaporama_isiz%-diaporama_ssiz%*2,diaporama_isiz%-diaporama_ssiz%*2) clipboard_paste diaporama_liste%(n%)+diaporama_img% 2d_target_is diaporama_liste%(n%)+diaporama_film% 2d_image_paste diaporama_liste%(n%)+diaporama_img%,(i%-1)*diaporama_isiz%+diaporama_ssiz%,diaporama_ssiz% next i% diaporama_resultat% = 0 cursor_default diaporama_liste%(n%) cursor_default diaporama_liste%(n%)+diaporama_film% end_sub
sub AdjustDiaporama(n%) dim_local w%, h%, res%, w1%, h1%, rw, rh w% = dll_call0("GetClipboardPictureWidth") h% = dll_call0("GetClipboardPictureHeight") rw = Diaporama_w%(n%)/w% w1% = int(w%*rw) h1% = int(h%*rw) if w1%>Diaporama_w%(n%) rw = Diaporama_w%(n%)/w1% w1% = Diaporama_w%(n%) h1% = int(h1%*rw) end_if if h1%>Diaporama_h%(n%) rh = Diaporama_h%(n%)/h1% h1% = Diaporama_h%(n%) w1% = int(w1%*rh) end_if width diaporama_liste%(n%)+Diaporama_aff%,w1% height diaporama_liste%(n%)+Diaporama_aff%,h1% top diaporama_liste%(n%)+Diaporama_aff%,diaporama_y%(n%)+int((Diaporama_h%(n%)-h1%)/2) left diaporama_liste%(n%)+Diaporama_aff%,diaporama_x%(n%)+int((Diaporama_w%(n%)-w1%)/2) res% = dll_call2("ResizePicture",w1%,h1%) caption 0,str$(w1%)+","+str$(h1%)+" "+str$(w%)+","+str$(h%) end_sub
sub GetDiaporamaImageCount(n%) diaporama_resultat% = -2 : ' exécution impossible if (n%<1) or (n%>diaporama_n%) then exit_sub diaporama_resultat% = count(diaporama_liste%(n%)+diaporama_list%) end_sub
diaporama_premier: cursor_hourglass number_click : display IdentifyDiaporama(number_click,diaporama_prm%) DisplayDiaporamaPicture(diaporama_resultat%,1) cursor_default number_click return
diaporama_precedent: cursor_hourglass number_click : display IdentifyDiaporama(number_click,diaporama_prc%) DisplayDiaporamaPicture(diaporama_resultat%,diaporama_prmicon%(diaporama_resultat%)+diaporama_acticon%(diaporama_resultat%)-1-1) cursor_default number_click return
diaporama_suivant: cursor_hourglass number_click : display IdentifyDiaporama(number_click,diaporama_sui%) DisplayDiaporamaPicture(diaporama_resultat%,diaporama_prmicon%(diaporama_resultat%)+diaporama_acticon%(diaporama_resultat%)-1+1) cursor_default number_click return
diaporama_dernier: cursor_hourglass number_click : display IdentifyDiaporama(number_click,diaporama_der%) DisplayDiaporamaPicture(diaporama_resultat%,count(diaporama_liste%(diaporama_resultat%)+diaporama_list%)) cursor_default number_click return
sub IdentifyDiaporama(n%,type%) dim_local i% for diaporama_resultat%=1 to diaporama_n% if n%=(diaporama_liste%(diaporama_resultat%)+type%) then exit_sub next diaporama_resultat% diaporama_resultat% = 0 end_sub
sub DisplayDiaporamaPicture(n%,p%) dim_local nl%, ni%, na%, np%, nact%, i%, m%, res% nl% = diaporama_liste%(n%)+diaporama_list% if p%<1 then exit_sub if p%>count(nl%) then exit_sub ni% = diaporama_nicons%(n%) : ' nombre de vignettes dans la pellicule na% = diaporama_acticon%(n%) : ' vignette actuelle dans la pellicule np% = diaporama_prmicon%(n%) : ' première vignette dans la pellicule nact% = np% + na% - 1 if p%=nact% then exit_sub if p%<np% : ' image choisie à gauche de la pellicule ? color diaporama_liste%(n%)+diaporama_film%,0,0,0 for i%=1 to ni% f$ = item_read$(nl%,i%+p%-1) res% = dll_call1("LoadAnyImageFile",adr(f$)) if i%=1 AdjustDiaporama(n%) clipboard_paste diaporama_liste%(n%)+diaporama_aff% end_if res% = dll_call2("ResizePicture",diaporama_isiz%-diaporama_ssiz%*2,diaporama_isiz%-diaporama_ssiz%*2) clipboard_paste diaporama_liste%(n%)+diaporama_img% 2d_target_is diaporama_liste%(n%)+diaporama_film% 2d_image_paste diaporama_liste%(n%)+diaporama_img%,(i%-1)*diaporama_isiz%+diaporama_ssiz%,diaporama_ssiz% next i% diaporama_acticon%(n%) = 1 diaporama_prmicon%(n%) = p% exit_sub end_if if p%>=(np%+ni%) : ' image choisie à droite de la pellicule ? color diaporama_liste%(n%)+diaporama_film%,0,0,0 m% = p% - ni% + 1 for i%=1 to ni% f$ = item_read$(nl%,i%+m%-1) res% = dll_call1("LoadAnyImageFile",adr(f$)) if i%=ni% AdjustDiaporama(n%) clipboard_paste diaporama_liste%(n%)+diaporama_aff% end_if res% = dll_call2("ResizePicture",diaporama_isiz%-diaporama_ssiz%*2,diaporama_isiz%-diaporama_ssiz%*2) clipboard_paste diaporama_liste%(n%)+diaporama_img% 2d_target_is diaporama_liste%(n%)+diaporama_film% 2d_image_paste diaporama_liste%(n%)+diaporama_img%,(i%-1)*diaporama_isiz%+diaporama_ssiz%,diaporama_ssiz% next i% diaporama_acticon%(n%) = ni% diaporama_prmicon%(n%) = m% exit_sub end_if i% = p% - np% + 1 f$ = item_read$(nl%,p%) res% = dll_call1("LoadAnyImageFile",adr(f$)) AdjustDiaporama(n%) clipboard_paste diaporama_liste%(n%)+diaporama_aff% diaporama_acticon%(n%) = i% end_sub
diaporama_click: cursor_hourglass number_click : display IdentifyDiaporama(number_click,diaporama_film%) diaporama_xm% = mouse_x_left_down(diaporama_liste%(diaporama_resultat%)+diaporama_film%) diaporama_xm% = int(diaporama_xm%/diaporama_isiz%) if diaporama_xm%<diaporama_nicons%(diaporama_resultat%) DisplayDiaporamaPicture(diaporama_resultat%,diaporama_prmicon%(diaporama_resultat%)+diaporama_xm%) end_if cursor_default number_click return
Dernière édition par Klaus le Jeu 27 Fév 2014 - 16:20, édité 1 fois | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Nouvel objet Diaporama Jeu 27 Fév 2014 - 16:19 | |
| Là c'est nettement mieux en effet, les images sont normales. Les vignettes sont déformées, mais c'est sans doute le prix à payer pour en afficher le maximum... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvel objet Diaporama Jeu 27 Fév 2014 - 16:22 | |
| Oui. Les vignettes sont réctangulaires. Je n'ai pas encore fait l'effort de les ajuster. Je verrai ça.
On s'est croisé. Si tu regardes ci-dessus, j'ai ajouté deux paramètres de configuration... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Nouvel objet Diaporama Jeu 27 Fév 2014 - 16:35 | |
| Effectivement je n'avais pas fait attention, je vais regarder de plus près. Mais les vignettes me semblent plus carrées que rectangulaires ? si tu les mettais d'office en 4/3 (même modulables en dimensions) c'est de loin le rapport le plus courant... évidemment il y a les images verticales qui compliquent toujours tout ! j'évite d'en prendre en pensant aux traitements ultérieurs, mais mon épouse s'obstine... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvel objet Diaporama Jeu 27 Fév 2014 - 16:59 | |
| Effectivement, elles sont carrées pour le moment - en prévision de l'adaption aux formats portraits et paysage, en gardant le même espacement. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Nouvel objet Diaporama Jeu 27 Fév 2014 - 17:02 | |
| | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvel objet Diaporama Jeu 27 Fév 2014 - 17:26 | |
| Voici une version qui affiche les vignettes également dans leur ratio de dimensions réelles, toujours dans des cases carrées: diaporama_inc.bas: - Code:
-
' diaporama_inc.bas ' ' Ce module crée un objet Diaporama. On lui charge une liste* ' de fichiers image. L'objet présente une bande de vignettes ' en bas, ainsi que des boutons "<<","<",">" et ">>" pour ' déplacer la bande. Le reste de l'image est rempli par l'affichage ' d'une photo sélectionnée (par défaut, c'est la première). Un clic ' sur une des vignettes de la bande défilante affiche cette photo.
message "Ce module ne peut pas être exécuté directement." terminate
sub CreateDiaporama(no%,p%,x%,y%,w%,h%) if variable("diaporama_no%")=0 ' premier lancement: créer l'environement diaporama ' constantes dim diaporama_max% : diaporama_max% = 20 : ' nombre maxi dim diaporama_nobj% : diaporama_nobj% = 9 : ' nombre d'objets requis dim diaporama_aff0% : diaporama_aff0% = 0 : ' pour fond d'affichage: ' dim diaporama_aff% : diaporama_aff% = 1 : ' pour picture d'affichage: ' dim diaporama_prm% : diaporama_prm% = 2 : ' pour bouton "<<" dim diaporama_der% : diaporama_der% = 3 : ' pour bouton ">>" dim diaporama_prc% : diaporama_prc% = 4 : ' pour bouton "<" dim diaporama_sui% : diaporama_sui% = 5 : ' pour bouton ">" dim diaporama_film% : diaporama_film% = 6 : ' pour pellicule dim diaporama_list% : diaporama_list% = 7 : ' pour liste des noms de fichiers dim diaporama_img% : diaporama_img% = 8 : ' pour image temporaire dim diaporama_isiz% : diaporama_isiz% = 64 : ' taille des icônes dim diaporama_ssiz% : diaporama_ssiz% = 2 : ' taille des séparations ' variables dim diaporama_no%, diaporama_n% dim diaporama_resultat% dim diaporama_xm% dim diaporama_it%, diaporama_il% dim diaporama_liste%(diaporama_max%) : ' liste des objets Diaporama dim diaporama_x%(diaporama_max%) : ' position x des diaporamas dim diaporama_y%(diaporama_max%) : ' position y des diaporamas dim diaporama_w%(diaporama_max%) : ' largeur des diaporamas dim diaporama_h%(diaporama_max%) : ' hauteur des diaporamas dim diaporama_dossier$(diaporama_max%) : ' liste des dossiers dim diaporama_nicons%(diaporama_max%) : ' nombre de vignettes dans la pellicule dim diaporama_acticon%(diaporama_max%) : ' vignette actuelle dans la pellicule dim diaporama_prmicon%(diaporama_max%) : ' première vignette dans la pellicule ' labels label diaporama_premier, diaporama_precedent label diaporama_suivant, diaporama_dernier label diaporama_click end_if dim_local i% diaporama_resultat% = -1 : ' création impossible ' tester si le nombre d'objets requis est disponible for i%=0 to diaporama_nobj%-1 if object_exists(no%+i%)=1 then exit_sub next i% diaporama_n% = diaporama_n% + 1 diaporama_liste%(diaporama_n%) = no% diaporama_w%(diaporama_n%) = w% diaporama_h%(diaporama_n%) = h% diaporama_x%(diaporama_n%) = x% diaporama_y%(diaporama_n%) = y% if diaporama_w%(diaporama_n%)<256 then diaporama_w%(diaporama_n%) = 256 if diaporama_h%(diaporama_n%)<256 then diaporama_h%(diaporama_n%) = 256 ' création des objets ' zone d'affichage picture no%+diaporama_aff0% parent no%+diaporama_aff0%,p% top no%+diaporama_aff0%,diaporama_y%(diaporama_n%) : left no%+diaporama_aff0%,diaporama_x%(diaporama_n%) width no%+diaporama_aff0%,diaporama_w%(diaporama_n%) height no%+diaporama_aff0%,diaporama_h%(diaporama_n%) color no%+diaporama_aff0%,65,155,210 picture no%+diaporama_aff% parent no%+diaporama_aff%,p% top no%+diaporama_aff%,diaporama_y%(diaporama_n%) : left no%+diaporama_aff%,diaporama_x%(diaporama_n%) width no%+diaporama_aff%,diaporama_w%(diaporama_n%) height no%+diaporama_aff%,diaporama_h%(diaporama_n%) color no%+diaporama_aff%,65,155,210 stretch_on no%+diaporama_aff% ' bouton "premier" button no%+diaporama_prm% parent no%+diaporama_prm%,p% top no%+diaporama_prm%,diaporama_y%(diaporama_n%)+diaporama_h%(diaporama_n%) left no%+diaporama_prm%,diaporama_x%(diaporama_n%) width no%+diaporama_prm%,18 : height no%+diaporama_prm%,diaporama_isiz% caption no%+diaporama_prm%,"<<" on_click no%+diaporama_prm%,diaporama_premier font_bold no%+diaporama_prm% ' bouton "précédent" button no%+diaporama_prc% parent no%+diaporama_prc%,p% top no%+diaporama_prc%,diaporama_y%(diaporama_n%)+diaporama_h%(diaporama_n%) left no%+diaporama_prc%,diaporama_x%(diaporama_n%)+width(no%+diaporama_prm%) width no%+diaporama_prc%,14 : height no%+diaporama_prc%,diaporama_isiz% caption no%+diaporama_prc%,"<" on_click no%+diaporama_prc%,diaporama_precedent font_bold no%+diaporama_prc% ' bouton "dernier" button no%+diaporama_der% parent no%+diaporama_der%,p% top no%+diaporama_der%,diaporama_y%(diaporama_n%)+diaporama_h%(diaporama_n%) left no%+diaporama_der%,diaporama_x%(diaporama_n%)+diaporama_w%(diaporama_n%)-18 width no%+diaporama_der%,18 : height no%+diaporama_der%,diaporama_isiz% caption no%+diaporama_der%,">>" font_bold no%+diaporama_der% on_click no%+diaporama_der%,diaporama_dernier ' bouton "suivant" button no%+diaporama_sui% parent no%+diaporama_sui%,p% top no%+diaporama_sui%,diaporama_y%(diaporama_n%)+diaporama_h%(diaporama_n%) left no%+diaporama_sui%,left(no%+diaporama_der%)-14 width no%+diaporama_sui%,14 : height no%+diaporama_sui%,diaporama_isiz% caption no%+diaporama_sui%,">" on_click no%+diaporama_sui%,diaporama_suivant font_bold no%+diaporama_sui% ' pellicule picture no%+diaporama_film% parent no%+diaporama_film%,p% top no%+diaporama_film%,diaporama_y%(diaporama_n%)+diaporama_h%(diaporama_n%) left no%+diaporama_film%,diaporama_x%(diaporama_n%)+32 width no%+diaporama_film%,diaporama_w%(diaporama_n%)-64 height no%+diaporama_film%,diaporama_isiz% color no%+diaporama_film%,0,0,0 diaporama_nicons%(diaporama_n%) = int(width(no%+diaporama_film%)/diaporama_isiz%) on_click no%+diaporama_film%,diaporama_click ' liste des fichiers dlist no%+diaporama_list% ' image temporaire image no%+diaporama_img% diaporama_resultat% = diaporama_n% end_sub
sub LoadDiaporama(n%,d$) dim_local s$, actdir$, ext$, i%, ni%, res% diaporama_resultat% = -2 : ' chargement impossible if (n%<1) or (n%>diaporama_n%) then exit_sub s$ = trim$(d$) if len(s$)=0 then exit_sub if dir_exists(s$)=0 then exit_sub cursor_hourglass diaporama_liste%(n%) cursor_hourglass diaporama_liste%(n%)+diaporama_film% : display actdir$ = dir_current$ diaporama_dossier$(n%) = f$ clear diaporama_liste%(n%)+diaporama_list% ' charger la liste des noms de fichiers dir_change f$ f$ = file_find_first$ while f$<>"_" ext$ = lower$(file_extract_extension$(f$)) if (ext$=".jpg") or (ext$=".bmp") then item_add diaporama_liste%(n%)+diaporama_list%,f$ f$ = file_find_next$ end_while file_find_close dir_change actdir$ ni% = count(diaporama_liste%(n%)+diaporama_list%) if ni%=0 then exit_sub if ni%>diaporama_nicons%(n%) then ni% = diaporama_nicons%(n%) diaporama_acticon%(n%) = 1 : ' vignettes actuelle dans la pellicule diaporama_prmicon%(n%) = 1 : ' première vignette dans la pellicule for i% = 1 to ni% f$ = item_read$(diaporama_liste%(n%)+diaporama_list%,i%) res% = dll_call1("LoadAnyImageFile",adr(f$)) if i%=1 AdjustDiaporama(n%) clipboard_paste diaporama_liste%(n%)+diaporama_aff% end_if AdjustIcon(n%) clipboard_paste diaporama_liste%(n%)+diaporama_img% 2d_target_is diaporama_liste%(n%)+diaporama_film% 2d_image_paste diaporama_liste%(n%)+diaporama_img%,(i%-1)*diaporama_isiz%+diaporama_ssiz%+diaporama_il%,diaporama_ssiz%+diaporama_it% next i% diaporama_resultat% = 0 cursor_default diaporama_liste%(n%) cursor_default diaporama_liste%(n%)+diaporama_film% end_sub
sub AdjustDiaporama(n%) dim_local w%, h%, res%, w1%, h1%, rw, rh w% = dll_call0("GetClipboardPictureWidth") h% = dll_call0("GetClipboardPictureHeight") rw = Diaporama_w%(n%)/w% w1% = int(w%*rw) h1% = int(h%*rw) if w1%>Diaporama_w%(n%) rw = Diaporama_w%(n%)/w1% w1% = Diaporama_w%(n%) h1% = int(h1%*rw) end_if if h1%>Diaporama_h%(n%) rh = Diaporama_h%(n%)/h1% h1% = Diaporama_h%(n%) w1% = int(w1%*rh) end_if width diaporama_liste%(n%)+Diaporama_aff%,w1% height diaporama_liste%(n%)+Diaporama_aff%,h1% top diaporama_liste%(n%)+Diaporama_aff%,diaporama_y%(n%)+int((Diaporama_h%(n%)-h1%)/2) left diaporama_liste%(n%)+Diaporama_aff%,diaporama_x%(n%)+int((Diaporama_w%(n%)-w1%)/2) res% = dll_call2("ResizePicture",w1%,h1%) end_sub
sub AdjustIcon(n%) dim_local w%, h%, res%, w1%, h1%, rw, rh w% = dll_call0("GetClipboardPictureWidth") h% = dll_call0("GetClipboardPictureHeight") rw = (diaporama_isiz%-diaporama_ssiz%)/w% w1% = int(w%*rw) h1% = int(h%*rw) if w1%>(diaporama_isiz%-diaporama_ssiz%) rw = (diaporama_isiz%-diaporama_ssiz%)/w1% w1% = diaporama_isiz%-diaporama_ssiz% h1% = int(h1%*rw) end_if if h1%>(diaporama_isiz%-diaporama_ssiz%) rh = (diaporama_isiz%-diaporama_ssiz%)/h1% h1% = diaporama_isiz%-diaporama_ssiz% w1% = int(w1%*rh) end_if res% = dll_call2("ResizePicture",w1%,h1%) diaporama_it% = int((Diaporama_isiz%-diaporama_ssiz%-h1%)/2) diaporama_il% = int((Diaporama_isiz%-diaporama_ssiz%-w1%)/2) end_sub
sub GetDiaporamaImageCount(n%) diaporama_resultat% = -2 : ' exécution impossible if (n%<1) or (n%>diaporama_n%) then exit_sub diaporama_resultat% = count(diaporama_liste%(n%)+diaporama_list%) end_sub
diaporama_premier: cursor_hourglass number_click : display IdentifyDiaporama(number_click,diaporama_prm%) DisplayDiaporamaPicture(diaporama_resultat%,1) cursor_default number_click return
diaporama_precedent: cursor_hourglass number_click : display IdentifyDiaporama(number_click,diaporama_prc%) DisplayDiaporamaPicture(diaporama_resultat%,diaporama_prmicon%(diaporama_resultat%)+diaporama_acticon%(diaporama_resultat%)-1-1) cursor_default number_click return
diaporama_suivant: cursor_hourglass number_click : display IdentifyDiaporama(number_click,diaporama_sui%) DisplayDiaporamaPicture(diaporama_resultat%,diaporama_prmicon%(diaporama_resultat%)+diaporama_acticon%(diaporama_resultat%)-1+1) cursor_default number_click return
diaporama_dernier: cursor_hourglass number_click : display IdentifyDiaporama(number_click,diaporama_der%) DisplayDiaporamaPicture(diaporama_resultat%,count(diaporama_liste%(diaporama_resultat%)+diaporama_list%)) cursor_default number_click return
sub IdentifyDiaporama(n%,type%) dim_local i% for diaporama_resultat%=1 to diaporama_n% if n%=(diaporama_liste%(diaporama_resultat%)+type%) then exit_sub next diaporama_resultat% diaporama_resultat% = 0 end_sub
sub DisplayDiaporamaPicture(n%,p%) dim_local nl%, ni%, na%, np%, nact%, i%, m%, res% nl% = diaporama_liste%(n%)+diaporama_list% if p%<1 then exit_sub if p%>count(nl%) then exit_sub ni% = diaporama_nicons%(n%) : ' nombre de vignettes dans la pellicule na% = diaporama_acticon%(n%) : ' vignette actuelle dans la pellicule np% = diaporama_prmicon%(n%) : ' première vignette dans la pellicule nact% = np% + na% - 1 if p%=nact% then exit_sub if p%<np% : ' image choisie à gauche de la pellicule ? color diaporama_liste%(n%)+diaporama_film%,0,0,0 for i%=1 to ni% f$ = item_read$(nl%,i%+p%-1) res% = dll_call1("LoadAnyImageFile",adr(f$)) if i%=1 AdjustDiaporama(n%) clipboard_paste diaporama_liste%(n%)+diaporama_aff% end_if AdjustIcon(n%) clipboard_paste diaporama_liste%(n%)+diaporama_img% 2d_target_is diaporama_liste%(n%)+diaporama_film% 2d_image_paste diaporama_liste%(n%)+diaporama_img%,(i%-1)*diaporama_isiz%+diaporama_ssiz%,diaporama_ssiz% next i% diaporama_acticon%(n%) = 1 diaporama_prmicon%(n%) = p% exit_sub end_if if p%>=(np%+ni%) : ' image choisie à droite de la pellicule ? color diaporama_liste%(n%)+diaporama_film%,0,0,0 m% = p% - ni% + 1 for i%=1 to ni% f$ = item_read$(nl%,i%+m%-1) res% = dll_call1("LoadAnyImageFile",adr(f$)) if i%=ni% AdjustDiaporama(n%) clipboard_paste diaporama_liste%(n%)+diaporama_aff% end_if AdjustIcon(n%) clipboard_paste diaporama_liste%(n%)+diaporama_img% 2d_target_is diaporama_liste%(n%)+diaporama_film% 2d_image_paste diaporama_liste%(n%)+diaporama_img%,(i%-1)*diaporama_isiz%+diaporama_ssiz%,diaporama_ssiz% next i% diaporama_acticon%(n%) = ni% diaporama_prmicon%(n%) = m% exit_sub end_if i% = p% - np% + 1 f$ = item_read$(nl%,p%) res% = dll_call1("LoadAnyImageFile",adr(f$)) AdjustDiaporama(n%) clipboard_paste diaporama_liste%(n%)+diaporama_aff% diaporama_acticon%(n%) = i% end_sub
diaporama_click: cursor_hourglass number_click : display IdentifyDiaporama(number_click,diaporama_film%) diaporama_xm% = mouse_x_left_down(diaporama_liste%(diaporama_resultat%)+diaporama_film%) diaporama_xm% = int(diaporama_xm%/diaporama_isiz%) if diaporama_xm%<diaporama_nicons%(diaporama_resultat%) DisplayDiaporamaPicture(diaporama_resultat%,diaporama_prmicon%(diaporama_resultat%)+diaporama_xm%) end_if cursor_default number_click return
Dernière édition par Klaus le Jeu 27 Fév 2014 - 17:35, édité 1 fois | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Nouvel objet Diaporama Jeu 27 Fév 2014 - 17:31 | |
| C'est inchangé chez moi, mais tu n'aurais pas dû donner le include plutôt que le test ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvel objet Diaporama Jeu 27 Fév 2014 - 17:35 | |
| | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvel objet Diaporama Jeu 27 Fév 2014 - 17:41 | |
| J'ai créé un dossier diaporama sur mon WebDav. Les deux modules s'y trouvent. Ce sera plus cohérent ainsi. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Nouvel objet Diaporama Jeu 27 Fév 2014 - 17:46 | |
| D'accord, merci Klaus.
Effectivement, les vignettes sont quand même plus jolies comme ça. | |
| | | Contenu sponsorisé
| Sujet: Re: Nouvel objet Diaporama | |
| |
| | | | Nouvel objet Diaporama | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |