Jump to content

Ubicar una gui en distintos tamaños de pantalla?


lLinux

Recommended Posts

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
Link to comment

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.

Link to comment
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

Link to comment

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) 
  

Link to comment
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?

Link to comment
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?

Link to comment
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.

Link to comment
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?

Link to comment

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 
) 
  
  

Link to comment
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.

Link to comment

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 
  

Link to comment
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?

Link to comment
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

Link to comment

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

Link to comment
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 
) 
  

Link to comment
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?

Link to comment
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.

Link to comment
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.

Link to comment
  • Recently Browsing   0 members

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