vallejo Posted August 15, 2016 Posted August 15, 2016 Buenas trato de ajustar la resolución a una interfaz hecha en DX, y no se ajusta a todas las resoluciones, entonces quiero saber como puedo hacer eso, me guie por este post: https://forum.multitheftauto.com/viewtopic.php?f ... on#p891114 y estoy utilizando: local sx, sy = guiGetScreenSize() local rx, ry = 1024, 768 local px, py = (sx / rx), (sy / ry) pero no se ajusta a todas las resoluciones.
aka Blue Posted August 15, 2016 Posted August 15, 2016 Usa esto y lo vas ajustando manualmente: local sourceX, sourceY = 1366, 768 local sx, sy = guiGetScreenSize( ) -- Ejemplo dxDrawText( "ola", (520/sourceX)*sx, (230/sourceY)*sy, (123/sourceX)*sx, (302/sourceY)*sy )
vallejo Posted August 16, 2016 Author Posted August 16, 2016 en que resolución es recomendable hacer la GUI?
aka Blue Posted August 16, 2016 Posted August 16, 2016 Para que le vaya bien a todos, lo más recomendable diría yo es tener un monitor con la resolución máxima (1366x768). Usa el método que te dije, no es tan complicado ir arreglando las posiciones manualmente...
vallejo Posted August 16, 2016 Author Posted August 16, 2016 Para que le vaya bien a todos, lo más recomendable diría yo es tener un monitor con la resolución máxima (1366x768). Usa el método que te dije, no es tan complicado ir arreglando las posiciones manualmente... Lo haré
Tomas Posted August 16, 2016 Posted August 16, 2016 Para que le vaya bien a todos, lo más recomendable diría yo es tener un monitor con la resolución máxima (1366x768). Usa el método que te dije, no es tan complicado ir arreglando las posiciones manualmente... Yo uso uno de 1600*900
Arsilex Posted August 16, 2016 Posted August 16, 2016 En realidad la 1366x768 no es ni de cerca la máxima por lo ejemeplo uso 1080x1920. La máxima actualmente es 4k ( En monitores ) ya que se que existe una tele de 8k4k que es de 7680 x 4320 pero eso es aparte Volviendo al tema yo te sugiero trabajar con pixeles directamente es decir no trabajar en una resolución concreta si no que ajustar tu código directamente a todas las resoluciones.
vallejo Posted August 16, 2016 Author Posted August 16, 2016 Utilizo la opción que tu me dices pero cuando lo uso para los DXDrawText no funciona la GUI porque?
vallejo Posted August 17, 2016 Author Posted August 17, 2016 Lol por eso, si te fijas puse el resto en comentario para probar y efectivamente cuando pongo 1 DxDrawText no me muestra los rectángulos y ninguna otra figura solo cuando añado eso y este problema surgió cuando añadí las resoluciones: local sourceX, sourceY = 1366, 768 local sx, sy = guiGetScreenSize() addEventHandler("onClientResourceStart", resourceRoot, function() Actualizaciones = guiCreateMemo((370/sourceX)*sx, (372/sourceY)*sy, (628/sourceX)*sx, (200/sourceY)*sy, "", false) guiMemoSetReadOnly(Actualizaciones, true) usuario = guiCreateEdit((462/sourceX)*sx, (258/sourceY)*sy, (180/sourceX)*sx, (21/sourceY)*sy, "", false) contrasena = guiCreateEdit((821/sourceX)*sx, (258/sourceY)*sy, (180/sourceX)*sx, (21/sourceY)*sy, "", false) end ) addEventHandler("onClientRender", root, function() dxDrawLine(((360 - 1)/sourceX)*sx, ((195 - 1)/sourceY)*sy, ((360 - 1)/sourceX)*sx, (582/sourceY)*sy, tocolor(0, 0, 0, 255), 1, false) dxDrawLine((1008/sourceX)*sx, ((195 - 1)/sourceY)*sy, ((360 - 1)/sourceX)*sx, ((195 - 1)/sourceY)*sy, tocolor(0, 0, 0, 255), 1, false) dxDrawLine(((360 - 1)/sourceX)*sx, (582/sourceY)*sy, (1008/sourceX)*sx, (582/sourceY)*sy, tocolor(0, 0, 0, 255), 1, false) dxDrawLine((1008/sourceX)*sx, (582/sourceY)*sy, (1008/sourceX)*sx, ((195 - 1)/sourceY)*sy, tocolor(0, 0, 0, 255), 1, false) dxDrawRectangle((360/sourceX)*sx, (195/sourceY)*sy, (648/sourceX)*sx, (387/sourceY)*sy, tocolor(50, 220, 40, 100), false) dxDrawLine(((360 - 1)/sourceX)*sx, ((175 - 1)/sourceY)*sy, ((360 - 1)/sourceX)*sx, (239/sourceY)*sy, tocolor(254, 254, 254, 255), 1, false) dxDrawLine((1008/sourceX)*sx, ((175 - 1)/sourceY)*sy, ((360 - 1)/sourceX)*sx, ((175 - 1)/sourceY)*sy, tocolor(254, 254, 254, 255), 1, false) dxDrawLine(((360 - 1)/sourceX)*sx, (239/sourceY)*sy, (1008/sourceX)*sx, (239/sourceY)*sy, tocolor(254, 254, 254, 255), 1, false) dxDrawLine((1008/sourceX)*sx, (239/sourceY)*sy, (1008/sourceX)*sx, ((175 - 1)/sourceY)*sy, tocolor(254, 254, 254, 255), 1, false) dxDrawRectangle((360/sourceX)*sx, (175/sourceY)*sy, (648/sourceX)*sx, (64/sourceY)*sy, tocolor(0, 0, 0, 255), false) --- Cabecera dxDrawRectangle((446/sourceX)*sx, (297/sourceY)*sy, (229/sourceX)*sx, (26/sourceY)*sy, tocolor(235, 251, 235, 255), false) --btn1 dxDrawRectangle((685/sourceX)*sx, (297/sourceY)*sy, (229/sourceX)*sx, (26/sourceY)*sy, tocolor(235, 251, 235, 255), false) --btn2 dxDrawRectangle((492/sourceX)*sx, (333/sourceY)*sy, (373/sourceX)*sx, (29/sourceY)*sy, tocolor(235, 251, 235, 255), false) -- btn3 --dxDrawRectangle((242/sourceX)*sx, (192/sourceY)*sy, (5/sourceX)*sx, (0/sourceY)*sy, tocolor(255, 255, 255, 255), false) --dxDrawRectangle((530/sourceX)*sx, (269/sourceY)*sy, (800/sourceX)*sx, (0/sourceY)*sy, tocolor(255, 255, 255, 255), false) --dxDrawRectangle((530/sourceX)*sx, (269/sourceY)*sy, (800/sourceX)*sx, (0/sourceY)*sy, tocolor(255, 255, 255, 255), false) --[[dxDrawText("Usuario:", 366 + 1, 253 + 1, 488 + 1, 281 + 1, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, false, false, false) dxDrawText("Usuario:", (366, 253, 488, 281, tocolor(255, 255, 255, 255), 1.00, "pricedown", "left", "top", false, false, false, false, false) dxDrawText("Iniciar sesión", ((497 + 1)/sourceX)*sx, ((296 + 1)/sourceY)*sy, ((645 + 1)/sourceX)*sx, ((323 + 1)/sourceY)*sy, tocolor(50, 220, 40, 255), 1.00, "pricedown", "left", "top", false, false, false, false, false) dxDrawText("Iniciar sesión", (497/sourceX)*sx, (296/sourceY)*sy, (645/sourceX)*sx, (23/sourceY)*sy, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, false, false, false) dxDrawText("Recuperar contraseña", ((548 + 1)/sourceX)*sx, ((333 + 1)/sourceY)*sy, ((801 + 1)/sourceX)*sx, ((362 + 1)/sourceY)*sy, tocolor(50, 220, 40, 255), 1.00, "pricedown", "left", "top", false, false, false, false, false) dxDrawText("Recuperar contraseña", (548/sourceX)*sx, (333/sourceY)*sy, (801/sourceX)*sx, (362/sourceY)*sy, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, false, false, false) dxDrawLine((360/sourceX)*sx, (292/sourceY)*sy, (1007/sourceX)*sx, (291/sourceY)*sy, tocolor(0, 0, 0, 255), 2, false) dxDrawText("COMUNIDAD LATINA", ((440 - 1)/sourceX)*sx, ((181 - 1)/sourceY)*sy, ((1087 - 1)/sourceX)*sx, ((253 - 1)/sourceY)*sy, tocolor(255, 255, 255, 255), 2.50, "pricedown", "left", "top", false, false, false, false, false) dxDrawText("COMUNIDAD LATINA", ((440 + 1)/sourceX)*sx, ((181 - 1)/sourceY)*sy, ((1087 + 1)/sourceX)*sx, ((253 - 1)/sourceY)*sy, tocolor(255, 255, 255, 255), 2.50, "pricedown", "left", "top", false, false, false, false, false) dxDrawText("COMUNIDAD LATINA", ((440 - 1)/sourceX)*sx, ((181 + 1)/sourceY)*sy, ((1087 - 1)/sourceX)*sx, ((253 + 1)/sourceY)*sy, tocolor(255, 255, 255, 255), 2.50, "pricedown", "left", "top", false, false, false, false, false) dxDrawText("COMUNIDAD LATINA", ((440 + 1)/sourceX)*sx, ((181 + 1)/sourceY)*sy, ((1087 + 1)/sourceX)*sx, ((253 + 1)/sourceY)*sy, tocolor(255, 255, 255, 255), 2.50, "pricedown", "left", "top", false, false, false, false, false) dxDrawText("COMUNIDAD LATINA", (440/sourceX)*sx, (181/sourceY)*sy, (1087/sourceX)*sx, (253/sourceY)*sy, tocolor(0, 0, 0, 255), 2.50, "pricedown", "left", "top", false, false, false, false, false) dxDrawText("Contraseña:", ((677 + 1)/sourceX)*sx, ((254 + 1)/sourceY)*sy, ((815 + 1)/sourceX)*sx, ((279 + 1)/sourceY)*sy, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, false, false, false) dxDrawText("Contraseña:", (677/sourceX)*sx, (254/sourceY)*sy, (815/sourceX)*sx, (279/sourceY)*sy, tocolor(255, 255, 255, 255), 1.00, "pricedown", "left", "top", false, false, false, false, false) dxDrawText("Registrar", ((746 + 1)/sourceX)*sx, ((296 + 1)/sourceY)*sy, ((894 + 1)/sourceX)*sx, ((323 + 1)/sourceY)*sy, tocolor(50, 220, 40, 255), 1.00, "pricedown", "left", "top", false, false, false, false, false) dxDrawText("Registrar", (746/sourceX)*sx, (296/sourceY)*sy, (894/sourceX)*sx, (323/sourceY)*sy, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, false, false, false) ]]-- end )
aka Blue Posted August 17, 2016 Posted August 17, 2016 Eso es porque tendrás algunos argumentos mal. Te recomiendo en vez de hacer por ejemplo 503 + 1, directamente poner 504, es lo mismo... Y no se ponen tantos paréntesis, ess simplemente esto: (497/sourceX)*sx, (296/sourceY)*sy, (645/sourceX)*sx, (23/sourceY)*sy Porque vi que tenías cosas como... ((323 + 1)/sourceY)*sy Por eso no te lee el código, ese paréntesis no acaba en ningún lado, no engloba nada y tampoco es que pinte algo ahí. Los paréntesis se usan aquí para sacar un valor (la posición, dividida entre la resolución base (x/sourceX)*sx, multiplicada por el tamaño de la pantalla del jugador).
vallejo Posted August 17, 2016 Author Posted August 17, 2016 Listo hay medio ajusto, porque la resolución mas baja no la toma bien, la distorsiona demasiado creo que hay toca jugar con el ancho y largo. Como sería?
aka Blue Posted August 17, 2016 Posted August 17, 2016 No tiene que distorsionar nada. Lo unico que te debería dar problemas es el tema del tamaño del texto. Para ello, usa ésto: (sourceY/sy) * tamaño_texto
vallejo Posted August 17, 2016 Author Posted August 17, 2016 si tengo esto, como ajusto acorde a la formula que me dio el texto?: dxDrawText("Iniciar sesión", (498/sourceX)*sx, (297/sourceY)*sy, (646/sourceX)*sx, (325/sourceY)*sy, tocolor(50, 220, 40, 255), 1.00, "pricedown", "left", "top", false, false, false, false, false) dxDrawText("Iniciar sesión", (497/sourceX)*sx, (296/sourceY)*sy, (645/sourceX)*sx, (23/sourceY)*sy, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, false, false, false) Hice esto: dxDrawText("Iniciar sesión", (498/sourceX)*sx, (297/sourceY)*sy, (646/sourceX)*sx, (sourceY/sy)*325, tocolor(50, 220, 40, 255), 1.00, "pricedown", "left", "top", false, false, false, false, false) dxDrawText("Iniciar sesión", (497/sourceX)*sx, 296/sourceY)*sy, (645/sourceX)*sx, (sourceY/sy)*23, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, false, false, false) Pero mi duda es, el rectángulo si se ajusta normal a las resoluciones, pero el texto queda movido en X, no se ajusta en X solo el ancho. esta es la resolución mas baja:
aka Blue Posted August 17, 2016 Posted August 17, 2016 Por eso dije, lo debes ajustar manualmente. Cuando tú haces lo que te dije, no se va a quedar igual que como lo hiciste antes, ya que realizas distintas calculaciones, que, en casos, puede distorsionar lo que hiciste. Por lo cual, tendrás que ajustarlo manualmente.
vallejo Posted August 18, 2016 Author Posted August 18, 2016 ya solucione el tamaño de las letras con esto: local sx, sy = guiGetScreenSize() local x, y = 1366, 768 local fontsize = sx/1366 dxDrawText(": "..estrellas, (sx/x)*1163, (sy/y)*29, (sx/x)*1134, (sy/y)*67, tocolor(cr, cg, cb, 255), 1.50*fontsize, "pricedown", "left", "top", false, false, false, false, false)
vallejo Posted August 18, 2016 Author Posted August 18, 2016 Como lo tengo se ajusta a cualquier resolución.
DBY Posted August 18, 2016 Posted August 18, 2016 Realmente ajustar el tamaño de la fuente multiplicándolo por la X está mal, lo correcto es hacerlo por la y. Ejemplo: local sx, sy = guiGetScreenSize() local myX, myY = 1366, 768 dxDrawText("GG WP", (x/myX)*sx, (y/myY)*sy, (width/myX)*sx, (height/myY)*sy, tocolor(), (size/myY)*sy)
aka Blue Posted August 18, 2016 Posted August 18, 2016 Realmente ajustar el tamaño de la fuente multiplicándolo por la X está mal, lo correcto es hacerlo por la y.Ejemplo: local sx, sy = guiGetScreenSize() local myX, myY = 1366, 768 dxDrawText("GG WP", (x/myX)*sx, (y/myY)*sy, (width/myX)*sx, (height/myY)*sy, tocolor(), (size/myY)*sy) Está mal también (sy/myY)*size)
vallejo Posted August 18, 2016 Author Posted August 18, 2016 Bueno en todo caso lo dejaré así ya que es lo que quiero y gracias por sus aportes.
Tomas Posted August 18, 2016 Posted August 18, 2016 Realmente ajustar el tamaño de la fuente multiplicándolo por la X está mal, lo correcto es hacerlo por la y.Ejemplo: local sx, sy = guiGetScreenSize() local myX, myY = 1366, 768 dxDrawText("GG WP", (x/myX)*sx, (y/myY)*sy, (width/myX)*sx, (height/myY)*sy, tocolor(), (size/myY)*sy) Está mal también (sy/myY)*size) Es la misma operación.
Recommended Posts