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