Page 1 sur 1

[RESOLU] Line, Ok mais son épaisseur.

Publié : dim. 10/août/2008 21:43
par djmcg
Bonjour,

Je trace une ligne avec Line.

Code : Tout sélectionner

If StartDrawing(WindowOutput(0))
      		
      			Line(0, 210, 600, 0, RGB(67, 126, 188))
      		
      			StopDrawing() ;  C'est absolument indispensable quand les opérations de dessins sont terminées !!! Ne jamais l'oublier !
      			
    	EndIf
J'ai pris ce code dans la doc.

Mais comment influer sur l'épaisseur de la ligne ?

Merci.
Jean-Marie

Publié : dim. 10/août/2008 22:00
par Anonyme

Code : Tout sélectionner

      For Epaisseur = -2 To 2
               Line(0, 210+Epaisseur, 600, 0, RGB(67, 126, 188))
            Next 
               StopDrawing() ;  C'est absolument indispensable quand les opérations de dessins sont terminées !!! Ne jamais l'oublier !
               

@++

Publié : dim. 10/août/2008 22:02
par venom
salut , djmcg

voici comment je procède :

Code : Tout sélectionner

  If OpenWindow(0, 0, 0, 200, 200, "Lignes", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)   
    If StartDrawing(WindowOutput(0))
    
     For a = 10 To 20 ; ont crée une boucle qui rend la valeur de 10 a 20 donc a reçoit 10
        Line(0, a, 200, 0 ,RGB(255,0,0)); la ont remplace la valeur de x par a donc x = 10 jusqu'a 20 donc le programme dessines 10 lignes l'une en dessous de l'autre.
        Line(0, 80+a/2, 200, 0 ,RGB(255,0,0)); ont refait la meme operation en divisant a par 2 donc a = 5. mais ont commance la ligne a x = 80  
     Next

     StopDrawing()
    EndIf
    
    Repeat : Event = WaitWindowEvent() : Until  Event = #PB_Event_CloseWindow
  EndIf
bon l'explication va peut être de chambouler :wink: si tu ne comprend pas tout prévient j'essaierai d'être plus clair. a moins que quelqu'un a une autre sollution.



@++

Publié : dim. 10/août/2008 23:06
par kernadec
bonsoir
j'avais trouve ca sur le forum , je sais plus ou !
ce n'est que sous windows
sous linux et mac je pense qu'il y a l'equivalent
il y a aussi celle la pour les rotations de caracteres

Code : Tout sélectionner


Procedure Ligne(x,y,x1,y1,Width,color) 
   GetWindowRect_(WindowID(0),r.RECT)
   pen=CreatePen_(#PS_SOLID,Width,color)  ; style : #Ps_dash, #Ps_dot,etc
   penOld=SelectObject_(DC,pen) 
   MoveToEx_(DC,x,y,0):LineTo_(DC,x1,y1) 
   DeleteObject_(pen) 
   DeleteObject_(penOld) 
EndProcedure  

Procedure DrawRText(DC.l,x,y,Text.s,fFont.s,fangle.l,fHeight) 
;#####################################################################
; Procedure DrawRText  Author: Andreas
; Date: 14. June 2003
;#####################################################################
  Font = CreateFont_(fHeight,0,fangle*10,0,0,0,0,0,0,0,0,0,0,fFont) 
  GetWindowRect_(WindowID(0),r.RECT) 
  OldFont = SelectObject_(DC,Font) 
  SetTextAlign_(DC,#TA_BASELINE) 
  SetBkMode_(DC,#TRANSPARENT) 
  SetTextColor_(DC,RGB(0,0,255))
  ExtTextOut_(DC, x,y,0 ,r,Text,Len(Text),0 ) 
  SelectObject_(DC,OldFont) 
  DeleteObject_(Font) 
EndProcedure

Procedure Cercle(x,y,x1,y1,Width,color) 
   GetWindowRect_(WindowID(0),r.RECT)
   pen=CreatePen_(#PS_DASH,Width,color)    ;style : #Ps_dash, #Ps_dot, etc
   penOld=SelectObject_(DC,pen) 
   Ellipse_(DC,x,y,x1,y1)
   DeleteObject_(pen) 
   DeleteObject_(penOld) 
EndProcedure 
il y a aussi l'excelent code de guimauve ici: http://www.purebasic.fr/french/viewtopic.php?t=6339

Publié : lun. 11/août/2008 6:55
par djmcg
Merci les amis,

Ouf la rapidité. J'avais poser la question me disant que j'avais le temps d'allé dormir. Ce que j'ai fait.

Il me semblais bien qu'il fallait dessiner la ligne x fois.
Merci Venon pour la routine. Très compréhensif.

Donc ton exemple est très compréhensif pour moi. Je prendrais la liberté de dire si je comprend pas. Parce-que voyez-vous, je ne suis pas un génie en programmation et pourtant j'aime cela.
Le premier projet que je fait en PureBasic est une gestion de ma très très très :wink: petite boulangerie. Je fait la boulangerie-pâtisserie moi même
Merci aussi Kernadec, mais je suis en Linux et là aussi je débute.
Donc pour l'équivalent, j'ai besoin d'aide.

Merci pour votre aide.
Puis-je encore préciser que j'apprécie vraiment votre aide.
Voilà, pour l'heure, c'est l'exemple de Venom que je vais appliquer. Merci encore.
Bonne journée, (bien que je vais poser encore des questions, je suis sur l'ordi presque toute la journée) :)
Jean-Marie
PS.: oh :oops: j'avais pas remarqué le changement que CptBator avais fait. Merci aussi Cpt Bator. (une précision s'il vous plaît Capt = Capitaine)
PS 2 : Ben voilà c'est la solution de Capt Bator qui est la plus simple. Non ? Aurais-je pu trouver cela avec la doc ? Merci messieurs.
Info : J'évolue sur PC, sous GNU/Linux Ubuntu 8.04 LTS. PureBasic pour la programmation.

Publié : lun. 11/août/2008 11:13
par djes
La version à utiliser (sous windows) est celle de kernadec. Les autres ne tiennent pas compte de l'orientation de la ligne, ou sont plus lentes.

Publié : mar. 12/août/2008 4:40
par djmcg
Bonjour

Merci à tous d'avoir pris la peine de répondre.
djes a écrit :La version à utiliser (sous windows) est celle de kernadec. Les autres ne tiennent pas compte de l'orientation de la ligne, ou sont plus lentes.
Une précision s'il te plaît.
Cette solution n'est'elle pas sous windows.

Merci
Bonne journée

Jean-Marie