Jump to content

Valor relativo en dxDrawRectangle


aka Blue

Recommended Posts

Buenas. Estoy utilizando un nuevo método para hacer dxDraws relativos y tengo problemas con el dxDrawRectangle, la cosa está en que, en resolución baja (800x624 si no me equivoco), se ponen más pequeños y no sé si en una mayor a la que tengo (1024x768) se verían bien o mal. Ésto es lo que uso:

-- Parte normal:
local sx, sy = guiGetScreenSize( )
dxDrawRectangle( sx/19, sy/10+480, sx/5, sy/30, tocolor( 0, 0, 0, 50 ) )

-- Con posiciones del ratón:
local sx, sy = guiGetScreenSize( )
local mx, my, worldx, worldy, worldz = getCursorPosition( )
dxDrawRectangle( sx*mx-10, sy*my-3, sx/10+90, sy/10+70, tocolor( 0, 0, 0, 80 ) )

Gracias de antemano.

Link to comment
2 hours ago, aka Blue said:

Buenas. Estoy utilizando un nuevo método para hacer dxDraws relativos y tengo problemas con el dxDrawRectangle, la cosa está en que, en resolución baja (800x624 si no me equivoco), se ponen más pequeños y no sé si en una mayor a la que tengo (1024x768) se verían bien o mal. Ésto es lo que uso:


-- Parte normal:
local sx, sy = guiGetScreenSize( )
dxDrawRectangle( sx/19, sy/10+480, sx/5, sy/30, tocolor( 0, 0, 0, 50 ) )

-- Con posiciones del ratón:
local sx, sy = guiGetScreenSize( )
local mx, my, worldx, worldy, worldz = getCursorPosition( )
dxDrawRectangle( sx*mx-10, sy*my-3, sx/10+90, sy/10+70, tocolor( 0, 0, 0, 80 ) )

Gracias de antemano.

Eso no son relativos. y son mas pequeños porque los estas dividiendo.

Link to comment

Gracias @Gaberiel. Quiero preguntar... ayer hice lo siguiente, porque lo vi en un post de la sección inglesa.

local sWidth, sHeight = guiGetScreenSize( )
local sx1, sy1 = sWidth/1024, sHeight/768
dxDrawRectangle( sx1*50, sy1*555, sx1*210, sy1*25, tocolor( 0, 0, 0, 50 ) )

Por lo visto se dibuja bien en todas las resoluciones (lo dibujé en 800 y lo testeé en 1024 y por lo visto, quedaba en la misma posición), aunque no estoy muy seguro.

Y bueno, mi otra duda es hacerlo relativo con la posición del ratón, ya que, ahora tengo ésto:

local sx, sy = guiGetScreenSize( )
local mx, my, worldx, worldy, worldz = getCursorPosition( )
dxDrawRectangle( sx*(1024/sx*mx-0.004), sy*(768/sy*my), sx*(1024/sx/5), sy*(768/sy/10+0.095), tocolor( 0, 0, 0, 80 ) )
dxDrawImage ( sx*mx+42, sy*my, sx/12, sy/10, 'tuerca.png', 0, 0, 0, tocolor( 255, 145, 0, 200 ) )

Ví en la wiki, exactamente en la explicación de guiGetScreenSize que lo que se tenía que dividir era la posición del rectángulo entre la resolución de la pantalla y después multiplicarlo.

Link to comment
13 hours ago, aka Blue said:

Gracias @Gaberiel. Quiero preguntar... ayer hice lo siguiente, porque lo vi en un post de la sección inglesa.


local sWidth, sHeight = guiGetScreenSize( )local sx1, sy1 = sWidth/1024, sHeight/768dxDrawRectangle( sx1*50, sy1*555, sx1*210, sy1*25, tocolor( 0, 0, 0, 50 ) )

Por lo visto se dibuja bien en todas las resoluciones (lo dibujé en 800 y lo testeé en 1024 y por lo visto, quedaba en la misma posición), aunque no estoy muy seguro.

Y bueno, mi otra duda es hacerlo relativo con la posición del ratón, ya que, ahora tengo ésto:


local sx, sy = guiGetScreenSize( )local mx, my, worldx, worldy, worldz = getCursorPosition( )dxDrawRectangle( sx*(1024/sx*mx-0.004), sy*(768/sy*my), sx*(1024/sx/5), sy*(768/sy/10+0.095), tocolor( 0, 0, 0, 80 ) )dxDrawImage ( sx*mx+42, sy*my, sx/12, sy/10, 'tuerca.png', 0, 0, 0, tocolor( 255, 145, 0, 200 ) )

Ví en la wiki, exactamente en la explicación de guiGetScreenSize que lo que se tenía que dividir era la posición del rectángulo entre la resolución de la pantalla y después multiplicarlo.

addEventHandler("onClientRender", root,
    function()
        local sx, sy = guiGetScreenSize( )
        local mx, my = getCursorPosition( )
        local cx, cy = mx*sx, my*sy
        mx, my = cx / sx, cy / sy
        x, y = mx * sx, my * sy
        dxDrawRectangle(x, y, sx*(1024/5), sy*(768/sy/10+0.095), tocolor( 0, 0, 0, 80 ) )
        --dxDrawImage ( sx*mx+42, sy*my, sx/12, sy/10, 'tuerca.png', 0, 0, 0, tocolor( 255, 145, 0, 200 ) )
    end
)

CX y CY te da el resultado directo, MX y MY lo pasa a relativo. x, y fue un adicional que le agregue porque nose como piensas implementar que el cursor mueva el rectangulo con relativos asi que por eso está x, y; aunque como dije que cx, cy te los da directamente.

Edited by Gaberiel
Added
Link to comment
  • Recently Browsing   0 members

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