Jump to content

[QUESTION] responsive dx drawing


Recommended Posts

Posted
if getElementData( localPlayer,"duty_admin" )  == 1  then
   --dxDrawImage(ax,ay,iconH,iconH,"images/hud/adm_on.png")
   dxDrawImage(1645, 500, 64, 64, "images/hud/adm_on.png")
   table.insert(tooltips, "adminonduty")

Hello guys, so i`m learning slowly a lot of stuff when u answer my questions, now i got a problem, a bigger one i think, i draw that image but it shows different on other resolutions, can u please tell me how to do it or show me an example because i`m a beginner.. i tried following other scaling on all resolutions but i think they are no use, i want that icon basically to stand in the right middle screen..

 

 

Posted

You need to get the screen resolution with guiGetScreenSize and use it to calculate the coordinates for that resolution. That page has examples for this particular purpose.

  • Thanks 1
Posted

Can someone please give me an example on how to draw an image on all resolutions positioned right in the right middle , i tried to do it myself but it s just too much to understand by just reading, i need to see a script like that to understand it i think, please

  • Moderators
Posted
-- Okay, so you have to pick a base resolution, you should choose what you use.
local baseWidth, baseHeight = 1920, 1080 -- I pick fullhd
-- We'll need the current resolution
local screenWidth, screenHeight = guiGetScreenSize() -- imageine this is 1366x768 now
-- and now we have to calculate the difference ratio between the base- and current resolution
local xDiffRatio, yDiffRatio = screenWidth/baseWidth, screenHeight/baseHeight -- this will be: (1920/1366=1.40556) and (1080/768=1.40625)
-- then we have to multiply every (X-coordinate and Width with 'xDiffRatio') and every (Y-coordinate and Height with 'yDiffRatio') -> this will resize everything (ofcourse if base- and current resolution is equals, then it doesn't change)


-- now draw the image
local imageX, imageY = 1645, 500
local imageWidth, imageHeight = 64, 64
-- miltiply values with the right ratio
dxDrawImage(imageX*xDiffRatio, imageY*yDiffRatio, imageWidth*xDiffRatio, imageHeight*yDiffRatio, "images/hud/adm_on.png")


-- NOTE: you can make your life easier if you create a "custom" dxDrawImage event what do the math for you, call it 'myDrawImage'
function myDrawImage(x, y, width, height, ...) -- three dot means (...) every parameter after 4th, this is a "magic parameter"
    dxDrawImage(x*xDiffRatio, y*yDiffRatio, width*xDiffRatio, height*yDiffRatio, ...) -- and don't forget the dots
end
-- and now you can use your new function
myDrawImage(imageX, imageY, imageWidth, imageHeight, "images/hud/adm_on.png")

 

  • Thanks 1
  • Moderators
Posted
12 minutes ago, LeonardoWilliams said:

Thank you so much Patrick, you helped me again a lot!! You are the best :D❤️ 

Of course this code doesn't handle 4:3 resolutions like 800x600, and HUDs will be stretched.
You can find solution for that in the tutorial what srslyyyy linked above.

  • Thanks 1
  • Patrick changed the title to [QUESTION] responsive dx drawing

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

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