Remplir un polygone quelconque en mode hachuré.

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Philippe_GEORGES
Messages : 153
Inscription : mer. 28/janv./2009 13:28

Remplir un polygone quelconque en mode hachuré.

Message 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
Philippe GEORGES
"La simplicité est la sophistication suprême" (De Vinci)
assistance informatique, création de logiciels
Avatar de l’utilisateur
Mindphazer
Messages : 754
Inscription : mer. 24/août/2005 10:42

Re: Remplir un polygone quelconque en mode hachuré.

Message par Mindphazer »

Bonjour Phil
la fonction FillArea() devrait, j'imagine, répondre à ta demande ?
Edit : j'avais pas vu la contrainte "hachuré". Sorry
Bureau : Win11 64bits
Maison : Macbook Pro M4 16" SSD 512 Go / Ram 24 Go - iPad Air 128 Go (pour madame) - iPhone 17 Pro Max 256 Go
Avatar de l’utilisateur
kernadec
Messages : 1617
Inscription : ven. 25/avr./2008 11:14

Re: Remplir un polygone quelconque en mode hachuré.

Message 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
Avatar de l’utilisateur
Philippe_GEORGES
Messages : 153
Inscription : mer. 28/janv./2009 13:28

Re: Remplir un polygone quelconque en mode hachuré.

Message par Philippe_GEORGES »

Ok, je vais essayer de trouver celà, pourquoi pas ?
Merci pour ces infos !
Phil
Philippe GEORGES
"La simplicité est la sophistication suprême" (De Vinci)
assistance informatique, création de logiciels
Avatar de l’utilisateur
Mindphazer
Messages : 754
Inscription : mer. 24/août/2005 10:42

Re: Remplir un polygone quelconque en mode hachuré.

Message 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
Bureau : Win11 64bits
Maison : Macbook Pro M4 16" SSD 512 Go / Ram 24 Go - iPad Air 128 Go (pour madame) - iPhone 17 Pro Max 256 Go
Répondre