demande d'Aide pour faire un mini paint editor
demande d'Aide pour faire un mini paint editor
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
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
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
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+
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+
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
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
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :