[Resolut] Rectangle avec coins arrondis

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

[Resolut] Rectangle avec coins arrondis

Message par MLD »

Bonjour a tous
Je souhaite pouvoir dans une fenêtre, dessiner des rectangles a coins arrondis, de couleurs différentes.
J'ai essayé le code ci-dessous, mais sans résultat. Pourtant le retour de la fonction RoundRect est non nul.
Pouvez vous éclairer ma faible lanterne. Merci

Code : Tout sélectionner

; 5 - 3 - 2009 PB 4.30
; rectangle avec coins arrondis

 OpenWindow(0, 0, 0, 320, 170, "EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)  

hdc = GetWindowDC_(hwnd) 
 ;Debug  hdc
hpen=CreatePen_(#PS_SOLID, 1, RGB(0,0,245) )
           Old_Pen=SelectObject_(hdc,hpen) 
           RoundRect_ (hdc, 10,50,50,50,10,10)
;debug  RoundRect_ (hdc, 10,50,50,50,10,10)
           ;On remet l'ancien Pen au Hdc 
           SelectObject_(hdc,Old_Pen) 
            
           ;On détruit notre Pen 
           DeleteObject_(hpen) 
 Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow


s'il te plait , Utilise le bouton Code au dessus de l'editeur de la création de message
lorsque tu veux poster un code !!

Réedite ce message et regarde les balises pour comprendre !!
Dernière modification par MLD le ven. 06/mars/2009 8:41, modifié 2 fois.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

@MLD

Tiens voilà, une fonction faite maison, c'est du bio...

Code : Tout sélectionner

Procedure RoundRect(x, y, w, h, r, c)
   Protected I.L
   Protected J.L
   Protected Angle.F
   Dim x.F(3)
   Dim y.F(3)
   Protected xf.F
   Protected yf.F
   LineXY(x + r, y, x + w - r, y, c)
   LineXY(x + r, y + h, x + w - r, y + h, c)
   LineXY(x, y + r, x, y + h - r, c)
   LineXY(x + w, y + r, x + w, y + h - r, c)
   For I = 0 To 90
      For J = 0 To 3
         Angle = I * #PI / 180.0
         xf = x + r + Cos(Angle + (J * #PI / 2.0) ) * r
         yf = y + r - Sin(Angle + (J * #PI / 2.0) ) * r
         Flag = 0
         If (J & 2)
            yf = yf + h - 2 * r
            Flag = 1
         EndIf
         If ((J ! Flag) & 1) = 0
            xf = xf + w - 2 * r
         EndIf
         If I > 0 And I < 90
            LineXY(xf, yf, x(J), y(J), c)
         EndIf
         x(J) = xf
         y(J) = yf
      Next J
   Next I
EndProcedure

ExamineDesktops()
dw = DesktopWidth(0)
dh = DesktopHeight(0)
dd = DesktopDepth(0)

OpenWindow(0, 50, 50, dw - 100, dh - 100, "", $cf0001)
Repeat
   StartDrawing(WindowOutput(0) )
      RoundRect(50, 50, dw - 200, dh - 200, 20, #Red)
   StopDrawing()
Until WaitWindowEvent() = 16
CloseWindow(0)
zaphod
Messages : 135
Inscription : dim. 07/déc./2008 9:32

Message par zaphod »

J'ai testé ça :

Code : Tout sélectionner

OpenWindow(0,10,10,600,400,"teste",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget) 
hwnd=WindowID(0) 
hdc=GetDC_(hwnd) 
RoundRect_(hdc,50, 50, 250, 150, 50, 50) 
  
Repeat 
  Event=WaitWindowEvent() 
Until Event=#PB_Event_CloseWindow  
Z@ph0d//
chercheacomprendre
Messages : 72
Inscription : dim. 15/févr./2009 10:59

dessin de rectangle rayonné

Message par chercheacomprendre »

super je note vos codes les amis.

salut.
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Rectangle avec coins arrondis

Message par MLD »

OK. Problème résolut.
Merci a tous
Michel
Répondre