Page 1 sur 2

demande d'Aide pour faire un mini paint editor

Publié : mer. 03/mars/2004 9:17
par patmaba
Bonjour, je suis nouveau avec PB.

J'aimerai essayer comme premier exercice, de faire un paint editor comme celui de windows mais avec moins de fonctionnalité.

Mais déjà, je suis confronté à 2 problèmes. Le premier problème est comment définir un toolbar vertical déplaçable. Je n'ai pas trouvé d'exemple dans le répertoire source exemple de PB ni dans l'aide.

Le second problème est l'image comment lorsque l'image est plus grand que la fenêtre de base que les scrollbar apparaissent ou encore que lorsque la fenêtre est redimensionné d'obtenir les srollbar verticales et horizontales

Se serait bien gentil si qq peut me conseiller. Je trouve que PB est un super outil et j'ai hâte de le maîtriser.

Patmaba

merci

Publié : mer. 03/mars/2004 9:28
par Le Soldat Inconnu
Il faut utiliser la bibliotheque de Danilo, elle permet de faire des barres d'outils plus complexe.

http://pureproject.reelmedia.org/module ... eA&show=10
ça s'apelle PureTool

Sinon ,en bonus, pour des tranformations sur les images (contraste, etc...), j'ai posté du code sur le forum et j'ai sur mon site un sélecteur de couleur amélioré avec un exemple d'utilisation en PB.

A+

Publié : mer. 03/mars/2004 9:47
par comtois
un exemple avec une grande image dans la fenêtre

Code : Tout sélectionner

;Forum anglais 
;Auteur : Je ne sais plus
 
Procedure GetMouseX(gadget) 
   GetCursorPos_(mouse.POINT) 
   MapWindowPoints_(0,GadgetID(gadget),mouse,1) 
   ProcedureReturn mouse\x 
EndProcedure 

Procedure GetMouseY(gadget) 
   GetCursorPos_(mouse.POINT) 
   MapWindowPoints_(0,GadgetID(gadget),mouse,1) 
   ProcedureReturn mouse\Y 
EndProcedure 

Procedure GetDesktopWidth() 
   ProcedureReturn GetSystemMetrics_(#sm_cxscreen) 
EndProcedure 

Procedure GetDesktopHeight() 
   ProcedureReturn GetSystemMetrics_(#sm_cyscreen) 
EndProcedure 

Procedure ResizeCallback(hWnd,Message,wParam,lParam) 
   Resultat = #PB_ProcessPureBasicEvents 
   If Message = #wm_size 
      Largeur = lParam & $FFFF 
      Hauteur = (lParam >> 16 ) & $FFFF 
      MoveWindow_(GadgetID(1),0,0,Largeur,Hauteur,1) 
   EndIf 
   ProcedureReturn Resultat 
EndProcedure 

OpenWindow( 0,0,0,300,300,#PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_ScreenCentered,"PB_Scrollpaint") 
 CreateGadgetList(WindowID()) 
 SetWindowCallback(@ResizeCallback()) 
 
 AreaX = GetDesktopWidth() : AreaY = GetDesktopHeight() 
 
 hImg = CreateImage(0,AreaX,AreaY) 
 StartDrawing(ImageOutput()) 
 For x = 0 To AreaX Step 40 
   For Y = 0 To AreaY Step 40 
      Box(x,Y,20,20,RGB(0,0,255)) : Box(x+20,Y,20,20,RGB(0,0,180)) 
      Box(x,Y+20,20,20,RGB(0,0,128)) : Box(x+20,Y+20,20,20,RGB(0,0,80)) 
   Next Y 
Next x 
 StopDrawing() 
 
 ScrollAreaGadget(1,0,0,WindowWidth(),WindowHeight(),AreaX,AreaY,10,#PB_ScrollArea_BorderLess) 
 ImageGadget(2,0,0,AreaX,AreaY,hImg)  
 CloseGadgetList() 
 
 pendown=0 
 
 Repeat 
   Select WaitWindowEvent(): 
      Case #PB_EventCloseWindow: End 
         
      Case #WM_LBUTTONDOWN 
         mx=GetMouseX(2) : my=GetMouseY(2) 
         mxx=(mx/20)*20 : myy=(my/20)*20 
         UseImage(0) 
         StartDrawing(ImageOutput()) 
         Box(mxx,myy,20,20,RGB(255,180,0)) 
         StopDrawing() 
         SetGadgetState(2, UseImage(0)) 
         pendown=1 
         
      Case #WM_LBUTTONUP 
         pendown=0 
         
      Case #WM_MOUSEMOVE 
         If pendown=1 
            mx=GetMouseX(2) : my=GetMouseY(2) 
            mxx=(mx/20)*20 : myy=(my/20)*20 
            UseImage(0) 
            StartDrawing(ImageOutput()) 
            Box(mxx,myy,20,20,RGB(255,180,0)) 
            StopDrawing() 
            SetGadgetState(2, UseImage(0)) 
         EndIf 
         
      Case #PB_EventGadget 
         Select EventGadgetID() 
            Case 3 
               End 
         EndSelect 
   EndSelect 
ForEver 
 End 

Publié : mer. 03/mars/2004 11:35
par patmaba
merci, vous êtes géniaux.

Publié : mer. 03/mars/2004 11:40
par patmaba
quelle est l'url de ton site Le Soldat Inconnu ?

Publié : mer. 03/mars/2004 13:41
par Le Soldat Inconnu
le WWW dans les boutons en bas des messages. voir rubriques "PureBasic"

Publié : mer. 03/mars/2004 15:20
par patmaba
J'ai essayer d'installer la bibliotheque de Danilo.

J'ai suivi les étapes de l'installation du readme.

Maintenant, le compilateur affiche le message compilateur pas près ???

Que faire ?

Publié : mer. 03/mars/2004 16:08
par Anonyme2
Ferme l'éditeur de PureBasic et ouvre le à nouveau.

Publié : mer. 03/mars/2004 18:31
par Patrick88
merci comtois.

patrick

Publié : mer. 03/mars/2004 18:36
par Anonyme2
Je ne suis pas sur, mais j'ai un souvenir d'un code qui faisait un début de Paint, code de Danilo.

Peut-être avec ses librairies, mais pas moyen de me souvenir.

Publié : mer. 03/mars/2004 18:45
par Anonyme2
Ca y est, si tu as installé la librairie de Danilo TOOLBAR Professional, va dans le répertoire Example\TOOLBAR Professional\PurePaint et là il a fait une grande partie de l'éditeur de paint.

Publié : mer. 03/mars/2004 22:38
par patmaba
J'ai fermé l'editeur PB et réouvert. çà marche tjs pas ????

Publié : jeu. 04/mars/2004 6:29
par Anonyme2
Tu as la démo ?

Publié : jeu. 04/mars/2004 8:30
par patmaba
jetravaille sur nt4

Publié : jeu. 04/mars/2004 12:08
par patmaba
de plus ma version est la 3.80