Jump to content

Ubicar una gui en distintos tamaños de pantalla?


lLinux

Recommended Posts

Posted (edited)

Buenas a todos bueno lo que neceisot hacer es ubicar una GUI, mire que la wiki y me decia algo asi como lo que veran:

sx, sy = guiGetScreenSize() 
  
Rec1_x = 561/sx 
Rec1_y = 726/sy 
Rec2_x = 562/sx 
Rec2_y = 727/sy 
Text_x = 570/sx 
Text_y = 742/sy 
IMG_x = 585/sx 
IMG_y = 731/sy 
  
    function gui1() 
        dxDrawRectangle(sx*Rec1_x, sy*Rec1_y, 234, 43, tocolor(0, 0, 0, 50), true) --561, 726, 234, 43 
        dxDrawRectangle(sx*Rec2_x, sy*Rec2_y, 232, 41, tocolor(0, 0, 0, 160), true) --562, 727, 232, 41 
        dxDrawText(dxText, sx*Text_x, sy*Text_y, 814, 758, tocolor(255, 69, 59, 255), 1.00, "default-bold", "center", "top", false, false, true, false, false) --570, 742, 814, 758 
        dxDrawImage(sx*IMG_x, sy*IMG_y, 37, 34, IMGURL, 0, 0, 0, tocolor(255, 255, 255, 255), true) --585, 731, 37, 34 
    end 
addEventHandler("onClientRender", root, gui1) 

pero En las otras dimeciones aparece mal, alguien me puede expplicar que se debe hacer paso a paso?

Edited by Guest

Skype: HackerlLinux

¿Quieres aprender scripting para MTA? - http://www.scriptingmtasa.wordpress.com

"La disciplina es la clave del exito"

Posted

Básicamente divides un numero por otro y lo multiplicas por el mismo ((1 / 5) * 5), las variables que defines en las primeras lineas (desde la tercera a la décima) no deben utilizar ni la variable 'sx' ni 'sy', en cambio utiliza el tamaño de la pantalla desde la cual obtuviste estos números.

Developer @ MYVAL

Posted
Básicamente divides un numero por otro y lo multiplicas por el mismo ((1 / 5) * 5), las variables que defines en las primeras lineas (desde la tercera a la décima) no deben utilizar ni la variable 'sx' ni 'sy', en cambio utiliza el tamaño de la pantalla desde la cual obtuviste estos números.

Me puedes ayudar por un ejemplo, Ciber me dice que usa la funcion de centerwindow de la wiki pero no eso es lo que busco en si

Skype: HackerlLinux

¿Quieres aprender scripting para MTA? - http://www.scriptingmtasa.wordpress.com

"La disciplina es la clave del exito"

Posted

Suponiendo que diseñaste esto en una pantalla de resolución 1024 x 768, deberías utilizar algo así:

sx, sy = guiGetScreenSize() 
  
--FIJATE EN ESTOS CAMBIOS 
Rec1_x = 561/1024 
Rec1_y = 726/768 
Rec2_x = 562/1024 
Rec2_y = 727/768 
Text_x = 570/1024 
Text_y = 742/768 
IMG_x = 585/1024 
IMG_y = 731/768 
  
    function gui1() 
        dxDrawRectangle(sx*Rec1_x, sy*Rec1_y, 234, 43, tocolor(0, 0, 0, 50), true) --561, 726, 234, 43 
        dxDrawRectangle(sx*Rec2_x, sy*Rec2_y, 232, 41, tocolor(0, 0, 0, 160), true) --562, 727, 232, 41 
        dxDrawText(dxText, sx*Text_x, sy*Text_y, 814, 758, tocolor(255, 69, 59, 255), 1.00, "default-bold", "center", "top", false, false, true, false, false) --570, 742, 814, 758 
        dxDrawImage(sx*IMG_x, sy*IMG_y, 37, 34, IMGURL, 0, 0, 0, tocolor(255, 255, 255, 255), true) --585, 731, 37, 34 
    end 
addEventHandler("onClientRender", root, gui1) 
  

Developer @ MYVAL

Posted
Suponiendo que diseñaste esto en una pantalla de resolución 1024 x 768, deberías utilizar algo así:
sx, sy = guiGetScreenSize() 
  
--FIJATE EN ESTOS CAMBIOS 
Rec1_x = 561/1024 
Rec1_y = 726/768 
Rec2_x = 562/1024 
Rec2_y = 727/768 
Text_x = 570/1024 
Text_y = 742/768 
IMG_x = 585/1024 
IMG_y = 731/768 
  
    function gui1() 
        dxDrawRectangle(sx*Rec1_x, sy*Rec1_y, 234, 43, tocolor(0, 0, 0, 50), true) --561, 726, 234, 43 
        dxDrawRectangle(sx*Rec2_x, sy*Rec2_y, 232, 41, tocolor(0, 0, 0, 160), true) --562, 727, 232, 41 
        dxDrawText(dxText, sx*Text_x, sy*Text_y, 814, 758, tocolor(255, 69, 59, 255), 1.00, "default-bold", "center", "top", false, false, true, false, false) --570, 742, 814, 758 
        dxDrawImage(sx*IMG_x, sy*IMG_y, 37, 34, IMGURL, 0, 0, 0, tocolor(255, 255, 255, 255), true) --585, 731, 37, 34 
    end 
addEventHandler("onClientRender", root, gui1) 
  

Ya lo acomode si me dio gracias, ahora la pregunta, aparecera en el mismo lugar, en los otros tamaños de pantalla?

Skype: HackerlLinux

¿Quieres aprender scripting para MTA? - http://www.scriptingmtasa.wordpress.com

"La disciplina es la clave del exito"

Posted

De cierto modo, si, el problema es que las distintas resoluciones de pantalla utilizan también distintas escalas, lo que podría generar ciertas incomodidades visuales.

Developer @ MYVAL

Posted
De cierto modo, si, el problema es que las distintas resoluciones de pantalla utilizan también distintas escalas, lo que podría generar ciertas incomodidades visuales.

Eso es lo que quiero evitar, que en algunas pantallas se acomode bien y otras no. algo que pueda hacer?

Skype: HackerlLinux

¿Quieres aprender scripting para MTA? - http://www.scriptingmtasa.wordpress.com

"La disciplina es la clave del exito"

Posted
De cierto modo, si, el problema es que las distintas resoluciones de pantalla utilizan también distintas escalas, lo que podría generar ciertas incomodidades visuales.

Eso es lo que quiero evitar, que en algunas pantallas se acomode bien y otras no. algo que pueda hacer?

En los casos que necesito acomodar un diseño demasiado detallado a distintas resoluciones, opto por lo sencillo y consigo las coordenadas y tamaños "manualmente" desde cada resolución.

Developer @ MYVAL

Posted
De cierto modo, si, el problema es que las distintas resoluciones de pantalla utilizan también distintas escalas, lo que podría generar ciertas incomodidades visuales.

Eso es lo que quiero evitar, que en algunas pantallas se acomode bien y otras no. algo que pueda hacer?

En los casos que necesito acomodar un diseño demasiado detallado a distintas resoluciones, opto por lo sencillo y consigo las coordenadas y tamaños "manualmente" desde cada resolución.

Como?

Skype: HackerlLinux

¿Quieres aprender scripting para MTA? - http://www.scriptingmtasa.wordpress.com

"La disciplina es la clave del exito"

Posted

Se ubica bien en mi pantalla, pero en otras de mayor dimecion se ve mas abajo o mas arriba, no se ubica como, es:

  
    local sx, sy = guiGetScreenSize() --Obtiene el tamaño de la pantalla 
------------------------------------- 
-- 1366, 768 
--x - y 
    parax1212 = 1212/1366 
    parax1210 = 1210/1366 
    parax1211 = 1211/1366 
    paray19 = 19/768 
    paray17 = 17/768 
    paray18 = 18/768 
-- w - h 
    paraw1299 = 1299/1366 
    paraw1297 = 1297/1366 
    paraw1298 = 1298/1366 
    -- 
    parah56 = 56/768 
    parah54 = 54/768 
    parah55 = 55/768 
------------------------------------- 
  
addEventHandler("onClientRender", root, 
    function() 
        local time = getRealTime() --Obtiene el tiempo real. 
        local hours = time.hour --Obtiene las horas del tiempo real. 
        local minutes = time.minute --Obtiene los minutos del timpo real. 
        t1 = dxDrawText(""..hours..":"..minutes.."", sx*parax1212, sy*paray19, 1299, 56, tocolor(0, 0, 0, 255), 1.50, "pricedown", "left", "top", false, false, true, false, false) 
        t2 = dxDrawText(""..hours..":"..minutes.."", sx*parax1212, sy*paray17, 1299, 54, tocolor(0, 0, 0, 255), 1.50, "pricedown", "left", "top", false, false, true, false, false) 
        t3 = dxDrawText(""..hours..":"..minutes.."", sx*parax1210, sy*paray19, 1297, 56, tocolor(0, 0, 0, 255), 1.50, "pricedown", "left", "top", false, false, true, false, false) 
        t4 = dxDrawText(""..hours..":"..minutes.."", sx*parax1210, sy*paray17, 1297, 54, tocolor(0, 0, 0, 255), 1.50, "pricedown", "left", "top", false, false, true, false, false) 
        t5 = dxDrawText(""..hours..":"..minutes.."", sx*parax1211, sy*paray18, 1298, 55, tocolor(255, 255, 255, 255), 1.50, "pricedown", "left", "top", false, false, true, false, false) 
    end 
) 
  
  

Skype: HackerlLinux

¿Quieres aprender scripting para MTA? - http://www.scriptingmtasa.wordpress.com

"La disciplina es la clave del exito"

Posted

Ami haciendolo asi me sale bien en todas las resoluciones no se cual es tu problema.

Intenta poniendote otra resoulucion y hacer la multi reso con esa resolucion y despues prueba con la Normal que tienes.

por cierto que resolucion tienes?

Skype: Juliang09123

Posted

O simplemente

  
resolucion = guiGetScreenSize() 
if resolucion == 720*1280 then 
-- Script de gui adecuada a esa resolucion 
  

Y así lo mismo cambiado los numeritos de la resolucion xD

Currently developing for International Gaming Community - Join us!

Posted
O simplemente
  
resolucion = guiGetScreenSize() 
if resolucion == 720*1280 then 
-- Script de gui adecuada a esa resolucion 
  

Y así lo mismo cambiado los numeritos de la resolucion xD

Eso sencillamente no funcionaria, es imposible que la variable 'resolucion' adquiera un valor igual a 921600.

Developer @ MYVAL

Posted

yo lo hago de esta manera y me queda igual con todas las resoluciones

puedes tomarlo como ejemplo y darte un idea D:

sWidth, sHeight = guiGetScreenSize() 
  
        local x = sWidth/1000 
        local y = sHeight/1000  
function drawPanel() 
            dxDrawRectangle(x*345, y*230, x*317.5, y*640, tocolor(4, 4, 4, 60), false) 
            dxDrawEmptyRec(x*345, y*230, x*317.5, y*640, tocolor(0, 0, 0, 255), 1) 
            dxDrawRectangle(x*345, y*230, x*317.5, y*41.66, tocolor(2, 1, 1, 252), false) 
            dxDrawText("Help Panel", x*353, y*235, 476, 163, tocolor(255, 255, 255, 255), 0.83*y, "bankgothic", "left", "top", false, false, true, false, false) 
end 
  

430x73_FFFFFF_FF9900_000000_000000.png
Posted
yo lo hago de esta manera y me queda igual con todas las resoluciones

puedes tomarlo como ejemplo y darte un idea D:

sWidth, sHeight = guiGetScreenSize() 
  
        local x = sWidth/1000 
        local y = sHeight/1000  
function drawPanel() 
            dxDrawRectangle(x*345, y*230, x*317.5, y*640, tocolor(4, 4, 4, 60), false) 
            dxDrawEmptyRec(x*345, y*230, x*317.5, y*640, tocolor(0, 0, 0, 255), 1) 
            dxDrawRectangle(x*345, y*230, x*317.5, y*41.66, tocolor(2, 1, 1, 252), false) 
            dxDrawText("Help Panel", x*353, y*235, 476, 163, tocolor(255, 255, 255, 255), 0.83*y, "bankgothic", "left", "top", false, false, true, false, false) 
end 
  

1000? porque 1000?

Skype: HackerlLinux

¿Quieres aprender scripting para MTA? - http://www.scriptingmtasa.wordpress.com

"La disciplina es la clave del exito"

Posted
Ami haciendolo asi me sale bien en todas las resoluciones no se cual es tu problema.

Intenta poniendote otra resoulucion y hacer la multi reso con esa resolucion y despues prueba con la Normal que tienes.

por cierto que resolucion tienes?

Mi resolucion es de : 1366 x 768

Skype: HackerlLinux

¿Quieres aprender scripting para MTA? - http://www.scriptingmtasa.wordpress.com

"La disciplina es la clave del exito"

Posted

mmm lo pongo entre 1000 por que asi divide tu resolución en 1000 partes iguales y luego para ubicar la gui solo multiplicas por ejemplo si multiplicas por 500 seria la mitad de la pantalla en todas resoluciones , si multiplicas 1000 seria el final de tu pantalla y asi bla bla bla , no se si me abras entendido algo soy malo explicando xD

430x73_FFFFFF_FF9900_000000_000000.png
Posted
Linux pasame tu Client asi te lo hago pero sin los x y y hechos yo te los hago bien.

Por mp.

es este:

  
    local sx, sy = guiGetScreenSize() --Obtiene el tamaño de la pantalla 
------------------------------------- 
-- 1366, 768 
--x - y 
    parax1212 = 1212/1366 
    parax1210 = 1210/1366 
    parax1211 = 1211/1366 
    paray19 = 19/768 
    paray17 = 17/768 
    paray18 = 18/768 
-- w - h 
    paraw1299 = 1299/1366 
    paraw1297 = 1297/1366 
    paraw1298 = 1298/1366 
    -- 
    parah56 = 56/768 
    parah54 = 54/768 
    parah55 = 55/768 
------------------------------------- 
  
addEventHandler("onClientRender", root, 
    function() 
        local time = getRealTime() --Obtiene el tiempo real. 
        local hours = time.hour --Obtiene las horas del tiempo real. 
        local minutes = time.minute --Obtiene los minutos del timpo real. 
        t1 = dxDrawText(""..hours..":"..minutes.."", sx*parax1212, sy*paray19, 1299, 56, tocolor(0, 0, 0, 255), 1.50, "pricedown", "left", "top", false, false, true, false, false) 
        t2 = dxDrawText(""..hours..":"..minutes.."", sx*parax1212, sy*paray17, 1299, 54, tocolor(0, 0, 0, 255), 1.50, "pricedown", "left", "top", false, false, true, false, false) 
        t3 = dxDrawText(""..hours..":"..minutes.."", sx*parax1210, sy*paray19, 1297, 56, tocolor(0, 0, 0, 255), 1.50, "pricedown", "left", "top", false, false, true, false, false) 
        t4 = dxDrawText(""..hours..":"..minutes.."", sx*parax1210, sy*paray17, 1297, 54, tocolor(0, 0, 0, 255), 1.50, "pricedown", "left", "top", false, false, true, false, false) 
        t5 = dxDrawText(""..hours..":"..minutes.."", sx*parax1211, sy*paray18, 1298, 55, tocolor(255, 255, 255, 255), 1.50, "pricedown", "left", "top", false, false, true, false, false) 
    end 
) 
  

Skype: HackerlLinux

¿Quieres aprender scripting para MTA? - http://www.scriptingmtasa.wordpress.com

"La disciplina es la clave del exito"

Posted

Te hago una pregunta no? para que usas tablas? si sencillamente podrias hacer en la misma linea?

Otra pregunta de que tamaño es tu Pantalla? osea cuantas pulgadas?.

Si no funciona esto.ps nose cual seria el problema

Skype: Juliang09123

Posted
mmm lo pongo entre 1000 por que asi divide tu resolución en 1000 partes iguales y luego para ubicar la gui solo multiplicas por ejemplo si multiplicas por 500 seria la mitad de la pantalla en todas resoluciones , si multiplicas 1000 seria el final de tu pantalla y asi bla bla bla , no se si me abras entendido algo soy malo explicando xD

Si te entendi, pero si da en todas las pantallas?

Skype: HackerlLinux

¿Quieres aprender scripting para MTA? - http://www.scriptingmtasa.wordpress.com

"La disciplina es la clave del exito"

Posted
Te hago una pregunta no? para que usas tablas? si sencillamente podrias hacer en la misma linea?

Otra pregunta de que tamaño es tu Pantalla? osea cuantas pulgadas?.

Si no funciona esto.ps nose cual seria el problema

Dónde usó tablas? o.O

Y el script que el hizo se puede hacer sencillamente en una línea.

Currently developing for International Gaming Community - Join us!

Posted
Te hago una pregunta no? para que usas tablas? si sencillamente podrias hacer en la misma linea?

Otra pregunta de que tamaño es tu Pantalla? osea cuantas pulgadas?.

Si no funciona esto.ps nose cual seria el problema

Dónde usó tablas? o.O

Y el script que el hizo se puede hacer sencillamente en una línea.

Tampoco le entendi, pero de seguro penso que las variables son tablas.

Skype: HackerlLinux

¿Quieres aprender scripting para MTA? - http://www.scriptingmtasa.wordpress.com

"La disciplina es la clave del exito"

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...