VectorDrawing - Dessiner Carré vide fin

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

VectorDrawing - Dessiner Carré vide fin

Message par Shadow »

Salut,

Je ne sais pas comment faire pour dessiner un carrer vide fin (1 pixel d'épaisseur) avec VectorDrawing.
Quand je dessine, l'épaisseur minimal est de 2 (StrokePath()) et faut que se soit Pair, sinon ont ne vois pas grand chose, c'est flou.
Savez-vous comment faire svp ? :)

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 400, 200, "VectorDrawing", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  CanvasGadget(0, 0, 0, 400, 200)
  
  If StartVectorDrawing(CanvasVectorOutput(0))
    
    AddPathBox(50, 50, 200, 50)
    AddPathBox(150, 75, 200, 50)
    VectorSourceColor(RGBA(255, 0, 0, 255))
    StrokePath(2)
    
    StopVectorDrawing()
  EndIf
  
  Repeat
    Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow
EndIf
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: VectorDrawing - Dessiner Carré vide fin

Message par falsam »

l'épaisseur minimal est de 2 (StrokePath())
C'est faux. StrokePath(1) fonctionne.
et faut que se soit Pair,
Faux aussi forcément.
ont ne vois pas grand chose, c'est flou.
A part StrokePath(4) ou StrokePath(6) ou ce que tu veux, je ne vois pas comment faire pour améliorer ta vue. Un ophtalmo peut être ?
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: VectorDrawing - Dessiner Carré vide fin

Message par Shadow »

Oula, ça casse dur ici, ont va répondre proportionnellement alors:
Mode Cassage = On
C'est faux. StrokePath(1) fonctionne.
Jamais dis le contraire -> Je ne sais pas comment faire pour dessiner un carrer vide fin (1 pixel d'épaisseur) avec VectorDrawing.
C'est deux mini (Le plus petit) pour pas être flou (Mince, j'avais pas préciser, quel âne je fais !)
Cancre tu fais pour ne pas avoir compris cela !
Faux aussi forcément.
Tu crois ? -> et faut que se soit Pair, sinon ont ne vois pas grand chose, c'est flou (Oui là aussi, pas précisé, si 1 c'est flou (Mais pas que 1 qui est flou) pour le minimum.
A part StrokePath(4) ou StrokePath(6) ou ce que tu veux, je ne vois pas comment faire pour améliorer ta vue. Un ophtalmo peut être ?
A part, ceci, a part cela, Je ne vois pas comment faire pour améliorer ton intelligence, Un cerveautologue peut être ?
Ta quel âge déjà ?, c'est pas toi qui aurais besoin d'un ophtalmo plutôt ?

Tien une image, il faut que tu l’agrandisse (Tu va savoir faire ça, à ton âge ?) sinon tu va rien voir, à ton âge, c'est normale, ont est bigleux !
Toutes les images Pair son flou !:

Image

Alors ont va se la refaire en mode "Je suis un gros nul et je comprends rien parce que j'ai pas de cerveau" (Attention, Je vise personne en particulier !)

Mode Cassage = Off
Je ne sais pas comment faire pour dessiner un carrer vide fin (1 pixel d'épaisseur) avec VectorDrawing.
Alors ici, il veux dire que en utilisant la librairie "VectorDrawing" de Pure Basic, il ne sais pas comment faire pour dessiner un carré vide qui face 1 pixel d’épaisseur (Trait)
Regarde, ça par exemple, je voudrait faire ça:

Image
Quand je dessine, l'épaisseur minimal est de 2 (StrokePath())
Là, il dis que l'épaisseur minimal pour ne pas être flou Est de 2 !
et faut que se soit Pair, sinon ont ne vois pas grand chose, c'est flou.
Ah oui, et là, il dis que si l’épaisseur est de 2, 4, 6, 8, 10, 12, 14, etc (Pair quoi), que c'est pas flou.
Si c'est 1, 3, 5, 7, 9, 11, 13, etc (Impair quoi), que c'est flou.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: VectorDrawing - Dessiner Carré vide fin

Message par microdevweb »

@Shadow

Falsam a raison, mais si le résultat ne convient pas essaie avec la Bibliothèque de dessin 2d standard.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: VectorDrawing - Dessiner Carré vide fin

Message par Shadow »

D'ac, je ne sais pas comment faire mais je vais chercher merci :)
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: VectorDrawing - Dessiner Carré vide fin

Message par microdevweb »

Bon après teste la ligne est en effet plus fine avec les fonction de dessin standard, explication la nouvelle biblio ajoute un anticrénelage, c'est qui est un fameux avantage

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 400, 200, "VectorDrawing", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  CanvasGadget(0, 0, 0, 400, 200)
  
  If StartVectorDrawing(CanvasVectorOutput(0))
    
    AddPathBox(50, 50, 200, 50)
    AddPathBox(150, 75, 200, 50)
    VectorSourceColor(RGBA(255, 0, 0, 255))
    StrokePath(1)
    
    StopVectorDrawing()
  EndIf
   If StartDrawing(CanvasOutput(0))
    DrawingMode(#PB_2DDrawing_Outlined)
    Box(50, 150, 200, 50,RGBA(255, 0, 0, 255))
    Box(150, 175, 200, 50,RGBA(255, 0, 0, 255))
    
    StopDrawing()
  EndIf
  Repeat
    Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow
EndIf
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: VectorDrawing - Dessiner Carré vide fin

Message par falsam »

Hou hou, le grand Shadow me clashe (héhé). Peut être que la demande initiale n'était pas compréhensible...
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: VectorDrawing - Dessiner Carré vide fin

Message par Shadow »

Le problème en utilisant les fonction de dessin standard n'est pas de créer un Box
mais de créer des pointiller, tiret ou autre...

Je vais chercher pour voir comment faire ça.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: VectorDrawing - Dessiner Carré vide fin

Message par falsam »

A mon avis un exemple comme celui çi aurait été plus parlant avec ta première demande.

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 400, 200, "VectorDrawing", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  CanvasGadget(0, 0, 0, 400, 200)
  
  If StartVectorDrawing(CanvasVectorOutput(0))
    
    AddPathBox(50, 50, 100, 100)
    VectorSourceColor(RGBA(0, 0, 0, 255))
    StrokePath(1)
    
    AddPathBox(160, 50, 100, 100)
    VectorSourceColor(RGBA(0, 0, 0, 255))
    StrokePath(2)
    
    StopVectorDrawing()
  EndIf
  
  Repeat : Until WaitWindowEvent(10) = #PB_Event_CloseWindow
EndIf
Là j'aurais compris. Moi il me faut des images pour comprendre ^^
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: VectorDrawing - Dessiner Carré vide fin

Message par Shadow »

C'est effectivement toujours plus simple d’expliquer avec des images.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: VectorDrawing - Dessiner Carré vide fin

Message par microdevweb »

Avec un DotPath, le flou ne se voit presque pas.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: VectorDrawing - Dessiner Carré vide fin

Message par Shadow »

Sa change rien.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: VectorDrawing - Dessiner Carré vide fin

Message par Shadow »

J'ai essayer ça mais ça marche pas comme prévus.
Normalement ont devrais voir à travers et là non.

Code : Tout sélectionner

Enumeration 1
  #Fenetre
EndEnumeration

Global ImageSelection = 99
CreateImage(ImageSelection, 1, 1, 32, #PB_Image_Transparent)

Procedure DrawSelection(Windows.i, Gadget.i, X.i, Y.i, Largeur.i, Hauteur.i, Couleur.i, Eppaisseur.i, Type.i)
  
  ResizeImage(ImageSelection, Largeur.i, Hauteur.i, #PB_Image_Raw)
  
  StartDrawing(ImageOutput(ImageSelection))
  
  DrawingMode(#PB_2DDrawing_AlphaBlend)
  Box(0, 0, Largeur.i, Hauteur.i, RGBA(255, 255, 255, 255))
  
  DrawingMode(#PB_2DDrawing_Outlined | #PB_2DDrawing_AlphaBlend)
  Box(Eppaisseur.i - 1, Eppaisseur.i - 1, Largeur.i - ((Eppaisseur - 1) * 2), Hauteur.i - ((Eppaisseur - 1) * 2), RGBA(Red(Couleur.i), Green(Couleur.i), Blue(Couleur.i), 255))
  
  DrawingMode(#PB_2DDrawing_AlphaBlend)
  FillArea(0, 0, RGBA(Red(Couleur.i), Green(Couleur.i), Blue(Couleur.i), 255), RGBA(Red(Couleur.i), Green(Couleur.i), Blue(Couleur.i), 255))
  
  StopDrawing()
  
  If IsWindow(Windows)
    StartDrawing(WindowOutput(Windows))
    
  ElseIf IsGadget(Gadget)
    StartDrawing(CanvasOutput(Gadget))
    
  EndIf
  
  DrawAlphaImage(ImageID(ImageSelection), X.i, Y.i, 255)
  StopDrawing()
  
EndProcedure

Procedure Ma_Fenetre()
  
  If OpenWindow(#Fenetre, 327, 177, 500, 300, "Fenetre windows",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered | #PB_Window_TitleBar)
    CanvasGadget(#Fenetre + 1, 1, 1, 498, 298)
    
    DrawSelection(-1, #Fenetre + 1, 10, 10, 300, 200, RGB(255, 0, 0), 10, 0)
    DrawSelection(-1, #Fenetre + 1, 50, 25, 300, 200, RGB(0, 255, 0), 5, 0)
    DrawSelection(-1, #Fenetre + 1, 100, 50, 300, 200, RGB(0, 0, 255), 1, 0)
    
    Repeat ; D�part des �v�nements de boucle
      
      Event = WaitWindowEvent(1) ; Cette ligne attend pendent (Minuteur) qu'un �v�nement soit recus par la fen�tre
      
      Select Event 
          
        Case 0
          
        Case #PB_Event_Gadget
          
          Select EventGadget
              
            Case 0
              
          EndSelect
          
      EndSelect
      
    Until Event = #PB_Event_CloseWindow ; Fin des �v�nements de boucle
    
  EndIf
  
EndProcedure

Ma_Fenetre()

Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: VectorDrawing - Dessiner Carré vide fin

Message par GallyHC »

Bonjour,

Code 2d mis au propre et modifier pour que cela fonctionne comme voulu.

Code : Tout sélectionner

Enumeration 1
  #Fenetre
EndEnumeration

Global ImageSelection = 99
CreateImage(ImageSelection, 800, 600, 32, #PB_Image_Transparent)

Procedure DrawSelection(Windows.i, Gadgets.i, X.i, Y.i, Largeur.i, Hauteur.i, Couleur.i, Eppaisseur.i, Type.i)
;
;
;
  Define.i iobjet
  If StartDrawing(ImageOutput(ImageSelection))
    DrawingMode(#PB_2DDrawing_Outlined | #PB_2DDrawing_AlphaBlend)
    For i=0 To Eppaisseur - 1
      Box(x+i, y+i, Largeur-(i*2), Hauteur-(i*2), RGBA(Red(Couleur), Green(Couleur), Blue(Couleur), 255))
    Next i
    StopDrawing()
  EndIf
  ;
  ;
  ;
  If IsWindow(Windows)
    iobjet = WindowOutput(Windows)
  ElseIf IsGadget(Gadgets)
    iobjet = CanvasOutput(Gadgets)
  EndIf
  ;
  If StartDrawing(iobjet)
    DrawAlphaImage(ImageID(ImageSelection), 0, 0, 255)
    StopDrawing()
  EndIf
  
EndProcedure

Procedure Ma_Fenetre()
  
  If OpenWindow(#Fenetre, 327, 177, 500, 300, "Fenetre windows",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered | #PB_Window_TitleBar)
    CanvasGadget(#Fenetre + 1, 1, 1, 498, 298)
    
    DrawSelection(-1, #Fenetre + 1, 10, 10, 300, 200, RGB(255, 0, 0), 10, 0)
    DrawSelection(-1, #Fenetre + 1, 50, 25, 300, 200, RGB(0, 255, 0), 5, 0)
    DrawSelection(-1, #Fenetre + 1, 100, 50, 300, 200, RGB(0, 0, 255), 1, 0)
    
    Repeat ; D�part des �v�nements de boucle
      
      Event = WaitWindowEvent(1) ; Cette ligne attend pendent (Minuteur) qu'un �v�nement soit recus par la fen�tre
      
      Select Event 
          
        Case 0
          
        Case #PB_Event_Gadget
          
          Select EventGadget
              
            Case 0
              
          EndSelect
          
      EndSelect
      
    Until Event = #PB_Event_CloseWindow ; Fin des �v�nements de boucle
    
  EndIf
  
EndProcedure

Ma_Fenetre()
Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: VectorDrawing - Dessiner Carré vide fin

Message par Shadow »

Hééé super ça merci Gally ^^
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Répondre