Page 1 sur 1
Dessiner dans une region
Publié : dim. 19/juil./2009 13:49
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
Publié : dim. 19/juil./2009 17:51
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
Publié : sam. 25/juil./2009 14:28
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
Publié : sam. 25/juil./2009 18:45
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
Publié : dim. 26/juil./2009 19:58
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
Publié : dim. 26/juil./2009 20:08
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!
Publié : lun. 27/juil./2009 9:38
par cirederff
Merci pour cette rapidité,mais bon , je n' en suis pas encore à ce stade