aka Blue Posted September 28, 2016 Share Posted September 28, 2016 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
Enargy, Posted September 29, 2016 Share Posted September 29, 2016 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
aka Blue Posted September 29, 2016 Author Share Posted September 29, 2016 ¿Hay cálculos que lo transformen en relativo? Para los text uso sx/1000, sy/1000 y la escala sy*scale Link to comment
Enargy, Posted September 29, 2016 Share Posted September 29, 2016 9 hours ago, aka Blue said: ¿Hay cálculos que lo transformen en relativo? Para los text uso sx/1000, sy/1000 y la escala sy*scale Haciendo la inversa. Link to comment
aka Blue Posted September 29, 2016 Author Share Posted September 29, 2016 1024/sx, 768/sy (? Link to comment
Enargy, Posted September 30, 2016 Share Posted September 30, 2016 3 hours ago, aka Blue said: 1024/sx, 768/sy (? Si pero no la dividas con tu resolución sino con la posición del rectángulo. Link to comment
aka Blue Posted September 30, 2016 Author Share Posted September 30, 2016 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
Enargy, Posted September 30, 2016 Share Posted September 30, 2016 (edited) 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 September 30, 2016 by Gaberiel Added Link to comment
Recommended Posts