如何调整子对象的大小而不会拉伸?

问题描述

我想调整子项的大小以适合窗口依赖项。但是目前,当我调整窗口大小时,孩子被拉伸了。如何在没有拉伸物体的情况下计算正确的尺寸和位置?

我的示例代码

local objects = {
    {x = g_x + 0,y = g_y,w = 50,h = 50},{x = g_x + 55,{x = g_x + 110,{x = g_x + 165,{x = g_x + 220,h = 50}
}

function love.load()
    love.window.setMode(800,600,{resizable=true,vsync=false,minwidth=400,minheight=300})
    local n = {x = love.graphics.getWidth() / 2 - 25,y = love.graphics.getHeight() / 2 - 25,h = 50}
    table.insert(objects,n)
end

local default_w = love.graphics.getWidth()
local default_h = love.graphics.getHeight()

function love.draw()
    for i = 1,#objects do
        local obj = objects[i]
        love.graphics.setColor(42,42,42)
        love.graphics.rectangle("fill",obj.x,obj.y,obj.w,obj.h)
    end
end

function love.resize( new_w,new_h )

    local scale_Width = new_w / default_w
    local scale_Height = new_h / default_h

    for i = 1,#objects do

        local obj = objects[i]

        obj.x = obj.x * scale_Width
        obj.y = obj.y * scale_Height

        obj.w = obj.w * scale_Width
        obj.h = obj.h * scale_Height

    end

    default_w = new_w
    default_h = new_h

end

不更改窗口大小:https://i.imgur.com/zWKNoou.png 我的问题的示例:https://i.imgur.com/MIIbkGW.png 我要制作的东西:https://i.imgur.com/2la4Bye.png-蓝色矩形保存了原始比例,它是我想要的,但是目前在我的情况下,白色矩形像第二个屏幕截图中那样拉伸。

解决方法

我认为您想缩放位置,而不缩放大小...
所以把这些留在:

obj.x = obj.x * scale_Width
obj.y = obj.y * scale_Height

但是把这些去掉:

obj.w = obj.w * scale_Width
obj.h = obj.h * scale_Height