Page 3 sur 4
Re: Code du potar Slider, [Resolu] OpenWindow et molette
Publié : sam. 03/mars/2012 17:33
par Ar-S
Oui je préfère cette version

Re: Code du potar Slider, [Resolu] OpenWindow et molette
Publié : sam. 03/mars/2012 19:18
par graph100
C'est sympa là
Mais par contre, ca commence à faire bcp de code pour chaque modif ^^
Tu peux faire un code dans le 1er post, et le mettre à jour à chaque modif, ca seras moins dur à lire ! mais fait toujours un post pour dire qu'il y a une maj
Re: Code du potar Slider, [Resolu] OpenWindow et molette
Publié : sam. 03/mars/2012 19:36
par GallyHC
graph100> c'est pas faut, je mettre maintenant a jour dans le poste principal et indiquere la mise a jour.
je me demande si une version horizontal serais bien ou pas. et deux eme question y a t'il une facon simple de faire une rotation a une image a 90°?
merci,
gallyhc
Re: Code du potar Slider, [Resolu] OpenWindow et molette
Publié : sam. 03/mars/2012 19:49
par graph100
J'ai testé de changer la valeur min du slider et il y a une légère erreur avec la molette, une mauvaise parenthèse.
Suit la correction :
Code : Tout sélectionner
Procedure.l DMXGadget_Event(event.l, evenp.l, eveng.l)
;
Protected i.l
Protected lMosY.l
If event = #PB_Event_Gadget
For i=1 To numDMXSlider
If eveng = DMXSlider(i)\lCanva_01
If DMXSlider(i)\disable = 0 Or DMXSlider(i)\actived = #False
If evenp = #PB_EventType_MouseWheel
DMXSlider(i)\value + (GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_WheelDelta) * DMXSlider(i)\WheelZoom) * DMXSlider(i)\pas
If DMXSlider(i)\value < DMXSlider(i)\min
DMXSlider(i)\value = DMXSlider(i)\min
ElseIf DMXSlider(i)\value > DMXSlider(i)\max
DMXSlider(i)\value = DMXSlider(i)\max
EndIf
DMXSlider(i)\state = (DMXSlider(i)\min - DMXSlider(i)\value + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas
DMXSliderGadget_Draw(DMXSlider(i)\gadget)
ProcedureReturn DMXSlider(i)\gadget
EndIf
If evenp = #PB_EventType_LeftButtonDown Or (evenp = #PB_EventType_MouseMove And GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_Buttons) & #PB_Canvas_LeftButton)
lMosY = GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_MouseY) - (DMXSlider(i)\hb / 2)
If lMosY < 0
lMosY = 0
EndIf
If lMosY > DMXSlider(i)\h - DMXSlider(i)\hb
lMosY = DMXSlider(i)\h - DMXSlider(i)\hb
EndIf
DMXSlider(i)\value = DMXSlider(i)\min + (DMXSlider(i)\max - DMXSlider(i)\min) - (lMosY * DMXSlider(i)\pas)
DMXSlider(i)\state = lMosY
DMXSliderGadget_Draw(DMXSlider(i)\gadget)
ProcedureReturn DMXSlider(i)\gadget
EndIf
EndIf
EndIf
Next i
EndIf
ProcedureReturn -1
EndProcedure
Re: Code du potar Slider, [Resolu] OpenWindow et molette
Publié : sam. 03/mars/2012 20:01
par GallyHC
Merci j'ai corriger je fais encore quelque modifs et je mettrais la mise a jour

Re: Code du potar Slider, [Resolu] OpenWindow et molette
Publié : lun. 05/mars/2012 14:24
par GallyHC
Bonjour tous,
Je me demander si il y a une methode simple pour faire une rotation d'une image a 90° pour faire un slider verttical aussi je ne sais pas si perso et dans mon soft de controle j'en aurais besoin mais cela pourrait etre utile un jour
Cordialement,
GallyHC
Re: Code du potar Slider, [Resolu] OpenWindow et molette
Publié : lun. 05/mars/2012 15:09
par Ar-S
Voilà une procédure d'Ollivier.
Code : Tout sélectionner
Procedure.I RotateImage2(Image.I)
Protected Result.I
Protected SourceLarg.I
Protected SourceHaut.I
Protected DestLarg.I
Protected DestHaut.I
SourceLarg = ImageWidth(Image)
SourceHaut = ImageHeight(Image)
DestLarg = SourceHaut
DestHaut = SourceLarg
Result = CreateImage(-1, DestLarg, DestHaut)
For Y = 0 To (SourceHaut - 1)
For X = 0 To (SourceLarg - 1)
StartDrawing(ImageOutput(Image) )
C = Point(X, Y)
StopDrawing()
StartDrawing(ImageOutput(Result) )
Plot(DestLarg - Y - 1, X, C)
StopDrawing()
Next X
Next Y
ProcedureReturn Result
EndProcedure
Re: Code du potar Slider, [Resolu] OpenWindow et molette
Publié : lun. 05/mars/2012 15:56
par Ar-S
Avec un exemple sans procédure.
Code : Tout sélectionner
UseJPEGImageDecoder()
UseJPEGImageEncoder()
Enumeration
#S
#D
EndEnumeration
Img = LoadImage(#S, "F:\tonimage.jpg")
SourceLarg = ImageWidth(#S)
SourceHaut = ImageHeight(#S)
DestLarg = SourceHaut
DestHaut = SourceLarg
CreateImage(#D, DestLarg, DestHaut)
For Y = 0 To (SourceHaut - 1)
For X = 0 To (SourceLarg - 1)
StartDrawing(ImageOutput(#S) )
C = Point(X, Y)
StopDrawing()
StartDrawing(ImageOutput(#D) )
Plot(DestLarg - Y - 1, X, C)
StopDrawing()
Next X
Next Y
WW = ImageWidth(#D)
HH = ImageHeight(#D)
OpenWindow(0, 0, 0, WW, HH, "", $80000001)
ImageGadget(0, 0, 0, WW, HH, ImageID(#D))
Repeat
Until WaitWindowEvent() = #PB_Event_Gadget
CloseWindow(0)
FreeImage(#S) : FreeImage(#D)
C'est très lent ! Lance le programme avec le debug et attends (plusieurs secondes pour une petite image !)
ton image s'affichera. il existe probablement des méthodes plus performantes mais j'ai pas trop le temps de chercher.
Re: Code du potar Slider, [Resolu] OpenWindow et molette
Publié : lun. 05/mars/2012 15:58
par GallyHC
Merci Ar-s> c'est deja plus ou moin ce que je pense mais je cherche une solution quand je disait simple j'aurais du dire "rapide" mais c'est deja une piste je vais refechier a cela. sinon ce serais de faire tout les calcul X et Y et inverce mais je ne sais pas si c une bonne ou mauvaise solution mais c'est ce que j'aurais fait en VB6 lol
Cordialement,
GallyHC
Re: Code du potar Slider, [Resolu] OpenWindow et molette
Publié : lun. 05/mars/2012 16:01
par Ar-S
Re: Code du potar Slider, [Resolu] OpenWindow et molette
Publié : lun. 05/mars/2012 21:09
par GallyHC
Comment te dire heuuuuuu, merci

Re: Code du potar Slider, [Resolu] OpenWindow et molette
Publié : lun. 05/mars/2012 23:10
par Le Soldat Inconnu
Tss pourquoi allez chez les anglais
http://www.purebasic.fr/french/viewtopic.php?f=8&t=1237
Tu trouveras dans ma lib :
- Rotation d'image à 90, 180, 270°
- Rotation d'image avec l'angle que tu veux (et avec antialiasing)
- Symétrie d'image
Restons français !

Re: Code du potar Slider, [Resolu] OpenWindow et molette
Publié : mar. 06/mars/2012 1:03
par graph100
parfaitement d'accord LSI
@GallyHC : dans mon include sur les gadgets, il y a avec l'imageEx Gadget une routine de rotation. Je l'ai modifiée pour une utilisation facile avec des images, regarde si tu veux ^^ (le code n'étais pas de moi, peut etre un mélange de LSI et d'un type du fofo anglais)
Re: Code du potar Slider, [Resolu] OpenWindow et molette
Publié : mer. 07/mars/2012 20:43
par GallyHC
Bonjour,
J'ai mis a jour avec une selection multiple des potars voir le premier post
Cordialement,
GallyHC
Re: Code du potar Slider, [Resolu] OpenWindow et molette
Publié : jeu. 08/mars/2012 0:37
par graph100
franchement tu me bluffe là

c'est génial comme fonction !
idée pour aller plus loin :
-> tu permets au programmateur de faire des groupes de potar différents : on peut faire plusieurs groupe de déplacement différent (et permet aussi de modifier la couleur du rectangle de sélection
-> ajoute la touche alt par exemple pour faire des groupes à déplacement identique (ou bien à déplacement identique en % -> ils arrivent tous en haut en même temps qq soit leur position de départ). Je veux dire : lorsque tu ajoutes un potar au groupe avec alt : sa position n'est pas changé, mais lorsque tu bouges un potar du groupe, tous bougent avec un déplacement identique
je pense que bien sur, les groupes ne devraient pas méler des Ctrl et des alt : ca devrait réinit le groupe.
gg !