1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.
  2. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

Dessiner un texte centré dans une image

Discussion dans 'Sujets Divers' créé par PhantomX, Août 22, 2019.

  1. PhantomX

    PhantomX Member

    Inscrit:
    Juil 11, 2018
    Messages:
    78
    J'aime reçus:
    61
    Bonjour à vous,
    J'aimerais faire quelque chose de tout simple, dessiner un texte centré dans une image avec la fonction dTexte (ou autre).
    Le texte doit être centré verticalement et horizontalement.

    Est-ce qu'il y a une fonction pour connaitre la largeur d'un texte d'avance dans windev ou est-ce qu'il y a un calcul existant selon la taille de la police pour connaitre la largeur que mon texte va données en pixel pour que je puisse passé les bon paramètre à la fonction dTexte.

    La fonction TexteLargeur ne fonctionne pas car elle prend en paramètre un champ et je n'utilise pas de champ je travail sur un image mémoire en tâche parallèle, à moins qu'il y ai une manière de l'utilisé que je ne connaisse pas.

    Merci de votre aide
     
    Tags:
  2. popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,879
    J'aime reçus:
    1,531
    Salut

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ,
    une solution serait d'utiliser un champ que tu met en dehors de ta fenêtre afin de connaître la largeur et hauteur.
    puis tu pourra centrer ton texte.
     
  3. PhantomX

    PhantomX Member

    Inscrit:
    Juil 11, 2018
    Messages:
    78
    J'aime reçus:
    61
    Merci

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    J'y avait penser mais j'aimerais vraiment tout inclure dans une procédure global pour que ce soit facilement exportable. Il y a quand même 300+ lignes de code pour dessiner une jauge circulaire multiple :p
    Le but est d'indiquer la cadence de production actuel, la moyenne des 5 dernières productions ainsi que l'objectif établie par l'usine et ce pour une trentaine d'équipement en même temps donc 90 jauges à dessiner si on peut dire :p

    En plus, il va y avoir plusieurs jauge dans la même écran et je ne voudrais pas relentir ou avoir des micro blocage à cause du traitement alors je lance tout les dessins de mes jauges en tacheparallèle pour ensuite simplement passé ma variable image à l'image à l'écran.
    Je peux donc pas mettre un champ à l'intérieur de ma procédure. Je pourrais par contre le passé en paramètre mais ca fait moins propre d'être obligé de rajouter un champ à chaque fois que je veux mettre une jauge dans une fenêtre...

    Je vais le faire si je ne trouve pas d'autre solution :p

    Ca ressemble à ca (le tout est un dessin fait avec les fonction de dxxx) J'aurais aimer ne pas inclure de champ externe, mais bon, si on a pas le choix :(

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    La moyenne est la petite ligne jaune, l'objectif est la ligne bleu et la cadence est la grosse ligne (ici orangé) et change de couleur selon le pourcentage de l'objectif atteint.

    Merci
     
  4. popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,879
    J'aime reçus:
    1,531
    des jauges circulaire il en existe plein en HTML5 et JavaScript.
    vu que le texte centre est connu a l'avance, il n'y a aucune difficulté.
    je ne trouve pas ça intéressant.
    j'arrête de répondre a ce poste.
     
  5. PhantomX

    PhantomX Member

    Inscrit:
    Juil 11, 2018
    Messages:
    78
    J'aime reçus:
    61
    ah ok, de 1 à 20000 c'est surement connu à l'avance et est de même largeur de texte... Et si ca me tente d'écrire d'autre chose genre "L'objectif n'est pas référencé" ou autre, ca doit aussi faire la même longueur et écrit juste sur une ligne en plus...

    et bien, si c'est si facile, j'espère qu'une autre bonne âme va être capable de m'aider si je ne peux compter sur MAITRE POPOY pour répondre à un poste aussi facile et peu intéressant car ca existe en d'autre langage...

    Aussi bien arrêter de programmer alors ca, doit surement exister dans un autre langage en quelque part et aussi de respirer car quelqu'un d'autre à déjà respirer avant nous...
     
  6. FIREME

    FIREME Member

    Inscrit:
    Avr 18, 2019
    Messages:
    37
    J'aime reçus:
    43
    Bonjour,

    il faut utiliser les api et particulièrement : GetTextExtentPoint32A
    doc de l'api :

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    il y a un exemple ici :

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    donc je dirais :

    Code (Windev):

    [INDENT][B]FONCTION nHauteurTexte( sTexte )[/B]
    structTaille est une structure
                     x est un entier
                     y est un entier
    FIN
    nTaille est un structTaille
    dc est un entier =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ("gdi32","CreateDCA","Display",Null,Null,Null)

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ("gdi32.dll", "GetTextExtentPoint32A", :hdc, &stexte,

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sTexte), &nTaille)(
    RENVOYER nTaille:y[/INDENT]
     
    et la deuxième pour la largeur
    Code (Windev):

    [INDENT][B]FONCTION nLargeurTexte( sTexte )[/B]
    structTaille est une structure
                     x est un entier
                     y est un entier
     FIN
    nTaille est un structTaille
    dc est un entier =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ("gdi32","CreateDCA","Display",Null,Null,Null)

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ("gdi32.dll", "GetTextExtentPoint32A", :hdc, &stexte,

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sTexte), &nTaille)(
    RENVOYER nTaille:X[/INDENT]
     
    a tester car j'ai ce code depuis windev 15
     
    #6 FIREME, Août 23, 2019
    Dernière édition: Août 23, 2019
  7. PhantomX

    PhantomX Member

    Inscrit:
    Juil 11, 2018
    Messages:
    78
    J'aime reçus:
    61
    wow,
    j'aurais surment jamais trouvé et/ou réussi à mettre ca en place, j'ai jamais utilisé les API (jamais eu le besoin jusqu'à maintenant)

    J'essaie ca, merci

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

     
  8. FIREME

    FIREME Member

    Inscrit:
    Avr 18, 2019
    Messages:
    37
    J'aime reçus:
    43
    heu il y a eu des coquilles dans la copie

    il faut utiliser les api et particulièrement : GetTextExtentPoint32A
    doc de l'api :

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    il y a un exemple ici :

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    donc je dirais :
    Code (Windev):

    FONCTION nHauteurTexte( sTexte )
    structTaille est une structure
                     x est un entier
                     y est un entier
    FIN
    nTaille est un structTaille
    hdc est un entier =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ("gdi32","CreateDCA","Display",Null,Null,Null)

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ("gdi32.dll", "GetTextExtentPoint32A", hdc, &stexte,

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sTexte), &nTaille)(
    RENVOYER nTaille:y
     
    et la suivante pour la largeur :

    Code (Windev):

    FONCTION nLargeurTexte( sTexte )
    structTaille est une structure
                     x est un entier
                     y est un entier
     FIN
    nTaille est un structTaille
    hdc est un entier =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ("gdi32","CreateDCA","Display",Null,Null,Null)

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ("gdi32.dll", "GetTextExtentPoint32A", hdc, &stexte,

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sTexte), &nTaille)(
    RENVOYER nTaille:x
     
    a tester car j'ai ce code depuis windev 15
    j'ai pas pu modifier le code donc je l'ai réecrit

    dsl
     
    #8 FIREME, Août 23, 2019
    Dernière édition: Août 23, 2019
  9. PhantomX

    PhantomX Member

    Inscrit:
    Juil 11, 2018
    Messages:
    78
    J'aime reçus:
    61

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    Remarks
    The GetTextExtentPoint32 function uses the currently selected font to compute the dimensions of the string. The width and height, in logical units, are computed without considering any clipping.

    Qu'est-ce qu'il entende par l'écriture qui est selectionné présentement ?
    Je vais peut-être paraitre niaiseux, mais il y une écriture par défaut (police et taille) dans windows ou c'est autre chose ?
     

Partager cette page

Chargement...