Afficher une image Droppée
Publié : lun. 19/nov./2007 15:52
Hello,
Après avoir terminé mon petit resizer d'images, j'aimerai faire une petite visionneuse fonctionnant avec le drag n drop de PB4.
Et bien je n'arrive à rien ! je suis vert.
En gros j'ai ma petite fenêtre principale qui s'ouvre.
lorsqu'on fait glisser une image dessus, je lance à Loadimage de cette image.
Mais ensuite ? que faire de cette image ?
Un OpenWindow supplémentaire ? Est-ce préférable d'utiliser un openwindowedscreen et de charger l'image en sprite ?
j'avoue ne pas du tout maitriser les sprites, pour le moment je n'ai bossé qu'en openwindow classique.
Imaginons que je fasse glisser une image en 1280x1024,
comment récupérer les dimensions de cette même image pour que la fenêtre d'affichage soit de la même taile, donc invisible (oui j'aimerai ne voir que l'image)
Voilà mon code,
la procedure Afficheimage pour le moment repère bien les images déposées.. Je suppose que ce n'est pas sorcier mais la j'ai comme un bloquage.
Merci d'avance de votre aide,
Ajouter un petit TUTO dans la section dédiée serait pas mal
Après avoir terminé mon petit resizer d'images, j'aimerai faire une petite visionneuse fonctionnant avec le drag n drop de PB4.
Et bien je n'arrive à rien ! je suis vert.
En gros j'ai ma petite fenêtre principale qui s'ouvre.
lorsqu'on fait glisser une image dessus, je lance à Loadimage de cette image.
Mais ensuite ? que faire de cette image ?
Un OpenWindow supplémentaire ? Est-ce préférable d'utiliser un openwindowedscreen et de charger l'image en sprite ?
j'avoue ne pas du tout maitriser les sprites, pour le moment je n'ai bossé qu'en openwindow classique.
Imaginons que je fasse glisser une image en 1280x1024,
comment récupérer les dimensions de cette même image pour que la fenêtre d'affichage soit de la même taile, donc invisible (oui j'aimerai ne voir que l'image)
Voilà mon code,
la procedure Afficheimage pour le moment repère bien les images déposées.. Je suppose que ce n'est pas sorcier mais la j'ai comme un bloquage.
Code : Tout sélectionner
;VisioPics
Enumeration
#WIN
#Text_1
#AFFICHE
#WINPICS
#AFF_PICS
#Image
EndEnumeration
;}
UseJPEGImageDecoder ()
UsePNGImageDecoder ()
UseTGAImageDecoder ()
UseTIFFImageDecoder ()
Define.l Event, EventWindow, EventGadget, EventType, EventMenu
Procedure OpenWindow_WIN()
If OpenWindow(#WIN, 450, 200, 246, 88, "Visiopics Drag and Drop", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
;HideWindow(#WINPICS,1) ; je ne sais pas quelles genre de fenetre ouvrir
HideWindow(#WIN,0)
If CreateGadgetList(WindowID(#WIN))
TextGadget(#Text_1, 40, 2, 160, 17, "Mini Visioneuse d'image", #PB_Text_Center)
EditorGadget(#AFFICHE, 5, 22, 238, 60, #PB_Editor_ReadOnly)
SetGadgetText(#AFFICHE, "Faites simplement glisser les images"+Chr(10)+"dans la fenêtre")
PureRESIZE_SetGadgetResize(#Text_1, 0, 0, 0, 0)
PureCOLOR_SetGadgetColor(#Text_1, #PureCOLOR_SystemColor, $22CEF9)
PureCOLOR_SetWindowColor(#WIN, $22CEF9)
EndIf
EnableWindowDrop(#WIN, #PB_Drop_Files, #PB_Drag_Copy)
EndIf
EndProcedure
Procedure AfficheImage()
FichierDrop$ = EventDropFiles()
Count = CountString(FichierDrop$, Chr(10)) + 1
For i = 1 To Count
MonFichier$ = StringField(FichierDrop$, i, Chr(10))
NomFichier$=GetFilePart(MonFichier$)
ext$=LCase(GetExtensionPart(NomFichier$))
If ext$="jpg" Or ext$="png" Or ext$="tiff" Or ext$="tga" Or ext$="bmp"
DirImg$=GetPathPart(MonFichier$)
ext$=LCase(GetExtensionPart(NomFichier$))
LoadImage(#Image, MonFichier$)
MessageRequester("TEST","L'image déposée est : "+MonFichier$)
Else
MessageRequester("Erreur","Vous ne pouvez voir que des fichiers JPG, BMP,TIFF,TGA et PNG",#MB_ICONERROR)
EndIf
Next i
EndProcedure
OpenWindow_WIN()
;{- Event loop
Repeat
Event = WaitWindowEvent()
Select Event
; ///////////////////
Case #PB_Event_Gadget
EventGadget = EventGadget()
EventType = EventType()
If EventGadget = #Text_1
ElseIf EventGadget = #AFFICHE
EndIf
Case #PB_Event_WindowDrop
AfficheImage()
Case #PB_Event_CloseWindow
EventWindow = EventWindow()
If EventWindow = #WIN
CloseWindow(#WIN)
Break
EndIf
EndSelect
ForEver
Ajouter un petit TUTO dans la section dédiée serait pas mal