SOLVED Changer la taille de la police dans un gui


  • Bonjour tout le monde alors voila, aujourd'hui j'ai un probleme quant à la police d'ecriture de mon gui que je trouve trop grande, j'utilise cette fonction pour afficher un string : ```java
    this.fontRendererObj.drawString(I18n.format("mhpe.gui.award." + (i + 1) + ".line.1", new Object[0]), x + 130, y + 105, 0xF0F0F0);

    mais voila aucune variable change la taille de la police d'ecriture…
  • Modérateurs

    Il faudrait jouer avec OpenGL, en particulier glScale


  • Merci sa fonctionne une dernière question, lorsque que je réduit les cale a 0,7 et que je veux l'appliquer juste à un bout de code définit et non à tout ce qui précède glscale comment faire ?

  • Modérateurs

    @'Portuar':

    Merci sa fonctionne une dernière question, lorsque que je réduit les cale a 0,7 et que je veux l'appliquer juste à un bout de code définit et non à tout ce qui précède glscale comment faire ?

    float facteur = .7f;
    glScalef(facteur, facteur, facteur);
    ton bloc de code
    glScalef(1f/facteur, 1f/facteur, 1f/facteur);
    

    ou

    glPushMatrix();
    float facteur = .7f;
    glScalef(facteur, facteur, facteur);
    ton bloc de code
    glPopMatrix();
    

    permettent de faire ce que tu cherches normalement.


  • J ai retenue la deuxième méthode qui fonctionne parfaitement merci beaucoup!

    Édit : rectification, après avoir fait des test, lorsque je met le jeux en full screen ou que je change la taille de la fenêtre , le texte changé de position alors que tout fonction sans le glscale

  • Modérateurs

    @'Portuar':

    J ai retenue la deuxième méthode qui fonctionne parfaitement merci beaucoup!

    Édit : rectification, après avoir fait des test, lorsque je met le jeux en full screen ou que je change la taille de la fenêtre , le texte changé de position alors que tout fonction sans le glscale

    Montre moi le code. Il est possible qu'il y est des glTranslate et compagnie qui trainent.


  • Nop zero mais voila comme même le code

    GL11.glPushMatrix();
    GL11.glScalef(0.7f, 0.9f, 1.0f);
    this.fontRendererObj.drawString(I18n.format("mhpe.gui.award." + (i + 1) + ".line.1", new Object[0]), x + 225, y + 122, 0xF0F0F0);
    this.fontRendererObj.drawString(I18n.format("mhpe.gui.award." + (i + 1) + ".line.2", new Object[0]), x + 225, y + 132, 0xF0F0F0);
    this.fontRendererObj.drawString(I18n.format("mhpe.gui.award." + (i + 1) + ".line.3", new Object[0]), x + 225, y + 142, 0xF0F0F0);
    GL11.glPopMatrix();
    
  • Modérateurs

    Il vaudrait multiplier toutes les coordonnees passees dans drawString par 1.f/facteur

    Écrit avec Tapatalk depuis mon mobile. Pardonnez les possibles fautes, j'aime juste pas écrire avec mon mobile.


  • Penses tu que cela peux marcher si je faisais x + la valeur * scaledresolutioń je n ais pas trop compris ce que tu ma proposé puisque si je multiplie tout par 1/facteur les position seront toujours affecter par le glscale puisque que je ne fais que multiplier un calcul vraisemblablement faux.

  • Modérateurs

    De mon côté, j'ai ceci:

    float factor = 0.85f;
    glScalef(factor, factor, 1);
    Minecraft.getMinecraft().fontRenderer.drawString("mon texte", (int)((x+maValeurSurX)*(1f/factor)), (int)((y+(maValeurSurY))*(1f/factor)), laCouleur);
    glScalef(1f/factor, 1f/factor, 1);
    

    Il s'agit de multiplier toutes les coordonnées par l'inverse du facteur, les appels à glTranslate dans le code de Minecraft sont affectés aussi par glScalef.


  • Oui cela fonctionne sujet résolut.

    Ps : désolé de ne pas avoir essayer a la vue de ton message mais l'endroit ou je suis donne un reseau restreint et je ne peu donc pas faire les deux en même temps

  • Modérateurs

    Je déplace dans résolus