Résolu 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 -
Pour être situé au centre de n’importe quelle interface, il suffit de faire
width / 2
etheight / 2
, ce sont des calculs qui ne doivent jamais changer d’ordre, ensuite, tu as juste à fairewidth / 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); } }
-
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
etguiHeight
. -
Merci encore! Problème résolu