Problèmes pour centrer mon GUI



  • Bonjour, je n'arrive pas à centrer mon GUI au milieu de l'écran. Tout du moins j'y suis arrivé par tâtonnement mais du coup il ne s'adapte qu'à ma résolution d'écran, et non à toutes les autres.

    Pourriez vous me venir en aide?

    Voilà la classe de mon GUI :

    public class GuiTasseThe extends GuiScreen
    {
        int guiWidth = 510;
        int guiHeight = 446;
        
        @Override
        public void drawScreen(int x, int y, float ticks)
        {
            ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft(), Minecraft.getMinecraft().displayWidth, Minecraft.getMinecraft().displayWidth);
    
            int backX = sr.getScaledWidth();
            int backY = sr.getScaledHeight();
            
            int guiX = (width - guiWidth) / 2;
            int guiY = (height - guiHeight) / 2;
            GL11.glColor4f(1, 1, 1, 1);
            drawDefaultBackground();
            mc.renderEngine.bindTexture(new ResourceLocation(WizardingMod.MODID, "textures/gui/guiTasseThe.png"));
            drawTexturedModalRect(backX / 1.48F, backY / 6F, 0, 0, guiWidth / 2, guiHeight / 2);
            
            super.drawScreen(x, y, ticks);
        }
    }
    

    Merci d'avance pour votre aide!
    Bonne journée


  • Administrateurs

    Pour être situé au centre de n'importe quelle interface, il suffit de faire width / 2 et height / 2, ce sont des calculs qui ne doivent jamais changer d'ordre, ensuite, tu as juste à faire width / 2 - 50 pour avoir un décalage de 50 pixels à gauche du centre.



  • Merci beaucoup! J'ai remanié la classe du GUI pour le centrer mais le souci apparaît 4 fois au lieu d'1. Je précise que mon GUI fait 510x446 et ma texture fait 512x512.
    Voici ma classe :

    public class GuiTasseThe extends GuiScreen
    {
        int guiWidth = 510;
        int guiHeight = 446;
        
        @Override
        public void drawScreen(int x, int y, float ticks)
        {
            int guiX = (width - guiWidth) / 2;
            int guiY = (height - guiHeight) / 2;
            GL11.glColor4f(1, 1, 1, 1);
            drawDefaultBackground();
            mc.renderEngine.bindTexture(new ResourceLocation(WizardingMod.MODID, "textures/gui/guiTasseThe.png"));
            drawTexturedModalRect(guiX, guiY, 0, 0, guiWidth, guiHeight);
            
            super.drawScreen(x, y, ticks);
        }
    }
    

  • Administrateurs

    int guiX = (width - guiWidth) / 2;
    int guiY = (height - guiHeight) / 2;
    

    Ce n'est pas le bon calcul, il faudrait plutôt faire :

    int guiX = width / 2 - guiWidth;
    int guiY = height / 2 - guiHeight;
    

    Tu devrais obtenir un résultat plus proche de ce que tu veux, par contre, il faudra peut-être modifier la valeur de guiWidth et guiHeight.



  • Merci encore! Problème résolu 🙂


Log in to reply