DrawVectorParagraph

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
jak64
Messages : 85
Inscription : dim. 03/mai/2020 23:16

DrawVectorParagraph

Message par jak64 »

Bonjour,
1) Savez-vous s'il est possible en utilisant DrawVectorParagraph de choisir la couleur de fond du paragraphe ?
Pour la couleur de la police utilisée, il existe VectorSourceColor mais je n'ai rien trouvé pour la couleur de fond.
Je voudrais par exemple utiliser DrawVectorParagraph avec une police rouge sur un fond jaune.

Est-ce possible ?

2) D'autre part, mais je pense que ce n'est pas possible, les sauts de ligne ne sont pas gérés avec DrawVectorParagraph

Je voudrais, par exemple, écrire un texte avec des sauts de ligne pour qu'il soit plus aéré, par exemple :

"Chaque sortie de dessin a une unité de mesure par défaut. L'unité par défaut est le pixel pour les écrans ou les images et les points
pour les imprimantes et les images vectorielles.

Il est cependant possible de sélectionner une unité de mesure différente avec ImageVectorOutput(), PrinterVectorOutput() ou une fonction similaire."


Merci à vous
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: DrawVectorParagraph

Message par falsam »

Bonjour.

La couleur de fond effectivement il y a un souci. Mais qui peut être contourner.

Pour le saut de ligne il faut utiliser la valeur unicode de #LF$
:arrow: https://unicode-table.com/en/#000A

Code : Tout sélectionner

SDL$ = Chr($000A) + Chr($000A
Pourquoi deux fois la valeur unicode ? une première fois pour passer à la ligne et une seconde fois pour passer une nouvelle fois à la ligne et créer une ligne blanche :wink:

J'ai essayé avec la valeur unicode de #CRLF$. Ca ne fonctionne pas (Sauf erreur de ma part).

Le code exemple avec ce que tu souhaites.

Code : Tout sélectionner

; Definir le caractere Saut De ligne (SDL) 
Define SDL$ = Chr($000A) + Chr($000A) 

Define Texte$ = "Chaque sortie de dessin a une unité de mesure par défaut. L'unité par défaut est le pixel " +
                "pour les écrans ou les images et les points pour les imprimantes et les images vectorielles. "  + SDL$ +
                "Il est cependant possible de sélectionner une unité de mesure différente avec ImageVectorOutput(), " +
                "PrinterVectorOutput() ou une fonction similaire."


If OpenWindow(0, 0, 0, 400, 250, "VectorDrawing", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  CanvasGadget(0, 0, 0, 400, 250)
  LoadFont(0, "Times New Roman", 20)
  
  If StartVectorDrawing(CanvasVectorOutput(0))    
    VectorFont(FontID(0), 18)
    
    MovePathCursor(25, 25)
    DrawVectorParagraph(Texte$, 350, 200)
    
    StopVectorDrawing()
  EndIf
  
  Repeat
    Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow
EndIf
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: DrawVectorParagraph

Message par falsam »

Tu connais les coordonnées de ton paragraphe ? La solution pour la couleur de fond consiste à dessiner un rectangle avec la couleur que tu souhaites au même emplacement et dimension que ton paragraphe.

Code : Tout sélectionner

; Definir le caractere Saut De ligne (SDL) 
Define SDL$ = Chr($000A) + Chr($000A) 

Define Texte$ = "Chaque sortie de dessin a une unité de mesure par défaut. L'unité par défaut est le pixel " +
                "pour les écrans ou les images et les points pour les imprimantes et les images vectorielles. "  + SDL$ +
                "Il est cependant possible de sélectionner une unité de mesure différente avec ImageVectorOutput(), " +
                "PrinterVectorOutput() ou une fonction similaire."


If OpenWindow(0, 0, 0, 400, 250, "VectorDrawing", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  CanvasGadget(0, 0, 0, 400, 250)
  LoadFont(0, "Times New Roman", 20)
  
  If StartVectorDrawing(CanvasVectorOutput(0))
    ; Dessin du rectangle coloré
    VectorSourceColor(RGBA(255, 211, 211, 255))
    AddPathBox(25, 25, 350, 200)
    FillPath()
    
    ; Dessin du texte
    VectorSourceColor(RGBA(0, 0, 0, 255))    
    VectorFont(FontID(0), 18)
    MovePathCursor(25, 25)    
    DrawVectorParagraph(Texte$, 350, 200)
    
    StopVectorDrawing()
  EndIf
  
  Repeat
    Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow
EndIf
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
jak64
Messages : 85
Inscription : dim. 03/mai/2020 23:16

Re: DrawVectorParagraph

Message par jak64 »

Bonjour Falsam,
Merci pour le saut de ligne, c'est OK.
Pour la couleur de fond, effectivement j'avais trouvé cette solution de dessiner une rectangle mais j'imaginais qu'il y avait une solution plus académique.
Répondre