Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
-
lepiaf31
- Messages : 510
- Inscription : dim. 25/mars/2007 13:44
- Localisation : Toulouse, France
-
Contact :
Message
par lepiaf31 »
Bonjour
Je cherche à dessiner dans une région définie par CreateRoundRectRgn_() grace à FillRgn_() mais je n'y arrive pas

.
Voila mon code:
Code : Tout sélectionner
OpenWindow(0, 0, 0, 500, 400, "test", #PB_Window_ScreenCentered|#PB_Window_BorderLess)
Rgn = CreateRoundRectRgn_(50, 0, 500, 400, 30, 30)
;SetWindowRgn_(WindowID(0), Rgn, #True)
hDC = CreateCompatibleDC_(GetWindowDC_(WindowID(0)))
hBrush = CreateSolidBrush_(RGB(255,0,0))
Debug FillRgn_(hDC, Rgn, hBrush)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
-
nico
- Messages : 3702
- Inscription : ven. 13/févr./2004 0:57
Message
par nico »
Voici un code qui fonctionne:
Code : Tout sélectionner
OpenWindow(0, 0, 0, 500, 400, "test", #PB_Window_ScreenCentered|#PB_Window_BorderLess)
Rgn = CreateRoundRectRgn_(50, 0, 500, 400, 30, 30)
;SetWindowRgn_(WindowID(0), Rgn, #True)
hDC = GetDC_(WindowID(0))
hBrush = CreateSolidBrush_(RGB(255,0,0))
Debug FillRgn_(hDC, Rgn, hBrush)
ReleaseDC_(WindowID(0),hdc)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
-
lepiaf31
- Messages : 510
- Inscription : dim. 25/mars/2007 13:44
- Localisation : Toulouse, France
-
Contact :
Message
par lepiaf31 »
Merci beaucoup =)
Le probleme maintenant c'est que je ne peux pas mettre de gadget dans la region colorée

:
Code : Tout sélectionner
Procedure Paint()
Rgn = CreateRoundRectRgn_(50, 0, 500, 400, 30, 30)
hDC = GetDC_(WindowID(0))
hBrush = CreateSolidBrush_(RGB(255,0,0))
FillRgn_(hDC, Rgn, hBrush)
ReleaseDC_(WindowID(0),hdc)
EndProcedure
OpenWindow(0, 0, 0, 500, 400, "test", #PB_Window_ScreenCentered|#PB_Window_BorderLess)
Paint()
ButtonGadget(1, 150, 150, 100, 20, "test")
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
Case #PB_Event_Repaint
Paint()
EndSelect
ForEver
-
nico
- Messages : 3702
- Inscription : ven. 13/févr./2004 0:57
Message
par nico »
Code : Tout sélectionner
Global hBrush.l,Rgn.l
hBrush = CreateSolidBrush_(RGB(255,0,0))
Rgn = CreateRoundRectRgn_(50, 0, 500, 400, 30, 30)
Procedure WindowCallback(window , message, wParam, lParam)
res=#PB_ProcessPureBasicEvents
Select message
Case #WM_PAINT
hDC=BeginPaint_(window,ps.PAINTSTRUCT)
FillRgn_(hDC, Rgn, hBrush)
EndPaint_(window, ps)
ProcedureReturn 0
EndSelect
ProcedureReturn res
EndProcedure
OpenWindow(0, 0, 0, 500, 400, "test", #PB_Window_ScreenCentered|#PB_Window_BorderLess)
ButtonGadget(1, 150, 150, 100, 20, "test")
SetWindowCallback(@WindowCallback())
Repeat
event=WaitWindowEvent()
Select event
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
-
cirederff
- Messages : 54
- Inscription : ven. 15/mai/2009 19:57
Message
par cirederff »
Bonsoir,
Juste une petite question au passage:
Vous prenez où le CreateSolidBrush_() et le CreateRoundRectRgn_() et les autres dans le genre
Je suis sous PB 4.31 et quand je fais F1, rien....

je me doute que je doit louper queque chose mais quoi ?
merci a +
Fred
-
nico
- Messages : 3702
- Inscription : ven. 13/févr./2004 0:57
Message
par nico »
Dans Purebasic la majorité des API sont déclarés, pour les utiliser il suffit de taper le nom de la fonction suivi du signe "_".
Pour avoir des informations sur la fonction, tu vas à cette adresse:
http://msdn.microsoft.com/en-us/library/default.aspx
et là tu écrit le nom de la fonction et ça te donnera différents liens qui te donneront les informations nécessaires à l'utilisation de la fonction!
-
cirederff
- Messages : 54
- Inscription : ven. 15/mai/2009 19:57
Message
par cirederff »
Merci pour cette rapidité,mais bon , je n' en suis pas encore à ce stade