Dessiner une ligne en 2D avec le contrôle de l'épaisseur de la ligne.
En passant, ça pourrait être intéressant d'ajouter l'option aux commandes Line() et LineXY() de la librairie 2D Drawing.
N.B. Il y a sûrement une commande dans l'API windoze qui fait ce genre de truc. J'ai pas chercher avant de la programmer.
A+
Guimauve
Code : Tout sélectionner
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Nom du projet : Dessin Ligne 2D avec épaisseur
; Fichier : Trucs et Astuces
; Version : 1.0.0
; Programmation : OK
; Programmé par : Guimauve
; Date : 02-03-2007
; Mise à jour : 02-03-2007
; Codé avec PureBasic V4.02
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Procedure Line2D(x1.w, y1.w, x2.w, y2.w, Thickness.w, Color.l)
vector_i.w = x2 - x1
vector_j.w = y2 - y1
Radius.w = Thickness >> 1
Modulus.f = Sqr(vector_i * vector_i + vector_j * vector_j)
While t.f <= Modulus
Circle(x1 + vector_i * t ,y1 + vector_j * t, Radius, Color)
t + 0.004
Wend
EndProcedure
;/ <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;/ <<<<< !!! ATTENTION - CODE D'ESSAI - ATTENTION !!! <<<<<
;/ <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
If CreateImage(0,256,256)
If StartDrawing(ImageOutput(0))
Line2D(000, 000, 250, 125, 20, #Red)
LineXY(000, 000, 250, 125, #Yellow)
Line2D(256, 000, 000, 256, 10, #Yellow)
LineXY(256, 000, 000, 256, #Red)
Line2D(000, 128, 128, 000, 30, #Blue)
LineXY(000, 128, 128, 000, #Green)
StopDrawing()
EndIf
EndIf
If OpenWindow(0, 0, 0, 270, 270, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
If CreateGadgetList(WindowID(0))
ImageGadget(1, 5, 5, 256,256, ImageID(0), #PB_Image_Border)
EndIf
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_Menu
Select EventMenu()
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
EndSelect
EndSelect
Until EventID = #PB_Event_CloseWindow
EndIf
; <<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< FIN DU FICHIER <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<