Page 1 sur 1

VectorDrawing - Dessiner Carré vide fin

Publié : jeu. 12/mai/2016 13:29
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

Re: VectorDrawing - Dessiner Carré vide fin

Publié : jeu. 12/mai/2016 13:37
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 ?

Re: VectorDrawing - Dessiner Carré vide fin

Publié : jeu. 12/mai/2016 14:37
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.

Re: VectorDrawing - Dessiner Carré vide fin

Publié : jeu. 12/mai/2016 14:45
par microdevweb
@Shadow

Falsam a raison, mais si le résultat ne convient pas essaie avec la Bibliothèque de dessin 2d standard.

Re: VectorDrawing - Dessiner Carré vide fin

Publié : jeu. 12/mai/2016 14:47
par Shadow
D'ac, je ne sais pas comment faire mais je vais chercher merci :)

Re: VectorDrawing - Dessiner Carré vide fin

Publié : jeu. 12/mai/2016 14:50
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

Re: VectorDrawing - Dessiner Carré vide fin

Publié : jeu. 12/mai/2016 14:52
par falsam
Hou hou, le grand Shadow me clashe (héhé). Peut être que la demande initiale n'était pas compréhensible...

Re: VectorDrawing - Dessiner Carré vide fin

Publié : jeu. 12/mai/2016 15:15
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.

Re: VectorDrawing - Dessiner Carré vide fin

Publié : jeu. 12/mai/2016 15:18
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 ^^

Re: VectorDrawing - Dessiner Carré vide fin

Publié : jeu. 12/mai/2016 15:22
par Shadow
C'est effectivement toujours plus simple d’expliquer avec des images.

Re: VectorDrawing - Dessiner Carré vide fin

Publié : jeu. 12/mai/2016 17:01
par microdevweb
Avec un DotPath, le flou ne se voit presque pas.

Re: VectorDrawing - Dessiner Carré vide fin

Publié : jeu. 12/mai/2016 18:08
par Shadow
Sa change rien.

Re: VectorDrawing - Dessiner Carré vide fin

Publié : jeu. 12/mai/2016 18:13
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()


Re: VectorDrawing - Dessiner Carré vide fin

Publié : jeu. 12/mai/2016 22:27
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

Re: VectorDrawing - Dessiner Carré vide fin

Publié : jeu. 12/mai/2016 22:36
par Shadow
Hééé super ça merci Gally ^^