vallejo Posted August 15, 2016 Share 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. Link to comment
aka Blue Posted August 15, 2016 Share 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 ) Link to comment
vallejo Posted August 16, 2016 Author Share Posted August 16, 2016 en que resolución es recomendable hacer la GUI? Link to comment
aka Blue Posted August 16, 2016 Share 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... Link to comment
vallejo Posted August 16, 2016 Author Share 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é Link to comment
Tomas Posted August 16, 2016 Share 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 Link to comment
Arsilex Posted August 16, 2016 Share 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. Link to comment
vallejo Posted August 16, 2016 Author Share Posted August 16, 2016 Utilizo la opción que tu me dices pero cuando lo uso para los DXDrawText no funciona la GUI porque? Link to comment
aka Blue Posted August 16, 2016 Share Posted August 16, 2016 Porque los dx usan onClientRender Link to comment
vallejo Posted August 17, 2016 Author Share 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 ) Link to comment
aka Blue Posted August 17, 2016 Share 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). Link to comment
vallejo Posted August 17, 2016 Author Share 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? Link to comment
aka Blue Posted August 17, 2016 Share 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 Link to comment
vallejo Posted August 17, 2016 Author Share 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: Link to comment
aka Blue Posted August 17, 2016 Share 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. Link to comment
vallejo Posted August 18, 2016 Author Share 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) Link to comment
aka Blue Posted August 18, 2016 Share Posted August 18, 2016 Es así pero bueno: (sy/sourceY)*font_size Link to comment
vallejo Posted August 18, 2016 Author Share Posted August 18, 2016 Como lo tengo se ajusta a cualquier resolución. Link to comment
DBY Posted August 18, 2016 Share 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) Link to comment
aka Blue Posted August 18, 2016 Share 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) Link to comment
vallejo Posted August 18, 2016 Author Share Posted August 18, 2016 Bueno en todo caso lo dejaré así ya que es lo que quiero y gracias por sus aportes. Link to comment
Tomas Posted August 18, 2016 Share 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. Link to comment
Recommended Posts