Page 1 sur 1

Remplir un polygone quelconque en mode hachuré.

Publié : sam. 18/avr./2026 16:19
par Philippe_GEORGES
Bonjour à tous,

Je souhaite dessiner un polygone et le remplir sous forme hachuré.

Une fonction existe dans Windows : GdipAddPathPolygoni().

Mais est ce possible sur purebasic ? sur windows ou mieux en mode multiplateforme ?

Merci d'avance,

Amitiés,

Phil

Re: Remplir un polygone quelconque en mode hachuré.

Publié : sam. 18/avr./2026 17:52
par Mindphazer
Bonjour Phil
la fonction FillArea() devrait, j'imagine, répondre à ta demande ?
Edit : j'avais pas vu la contrainte "hachuré". Sorry

Re: Remplir un polygone quelconque en mode hachuré.

Publié : dim. 19/avr./2026 16:48
par kernadec
Slt phil
Peut etre que tu devrais essayer
la librairie "GDIPlus.lib"
Pour purebasic avec une super doc
Il me semble qu elle peut
Utiliser l ensemble des fonctions de
Cette bibliotheque graphique
Cordialement

Re: Remplir un polygone quelconque en mode hachuré.

Publié : lun. 20/avr./2026 10:12
par Philippe_GEORGES
Ok, je vais essayer de trouver celà, pourquoi pas ?
Merci pour ces infos !
Phil

Re: Remplir un polygone quelconque en mode hachuré.

Publié : lun. 20/avr./2026 11:17
par Mindphazer
Sinon, tu peux le faire en utilisant la bibliothèque VectorDrawing et VectorSourceImage avec le flag #PB_VectorImage_Repeat :

Code : Tout sélectionner

Procedure CreationMotif()
  Protected Img, i
  Img = CreateImage(#PB_Any, 20, 20, 32)   ; taille petite et multiple de 4 ou 8 = mieux
  If StartDrawing(ImageOutput(Img))
    Box(0, 0, 20, 20, RGB(255, 255, 255))     ; fond blanc
    
    ; Lignes diagonales (tu peux changer l'angle en modifiant le pas)
    For i = -30 To 30 Step 4
      Line(i, 0, 40, 40, RGB(50, 50, 50))   
    Next i
    StopDrawing()
    ProcedureReturn Img
  EndIf
EndProcedure

  
OpenWindow(0, 0, 0, 600, 400, "", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
CanvasGadget(0, 10, 10, 580, 380)

If StartVectorDrawing(CanvasVectorOutput(0))
  Motif = CreationMotif()
  ; on dessine un polygone quelconque
  MovePathCursor(100, 100)
  AddPathLine(350, 80)
  AddPathLine(420, 280)
  AddPathLine(180, 320)
  AddPathLine(50, 200)
  ClosePath()
  VectorSourceColor(RGBA(0, 0, 0, 255))
  StrokePath(2, #PB_Path_Preserve)     ; bordure d'abord
  VectorSourceImage(ImageID(Motif), 255, 20, 20, #PB_VectorImage_Repeat)
  FillPath()                     ; Remplit avec le motif hachuré   
  StopVectorDrawing()
EndIf
  
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow