如何调整子对象大小而不拉伸?
2020-8-15 12:36:48
收藏:0
阅读:165
评论:1
我想调整子对象的大小以适应窗口大小。但是当我调整窗口大小时,子对象会被拉伸。如何计算正确的大小和位置以避免对象被拉伸?
我的示例代码:
local objects = {
{x = g_x + 0, y = g_y, w = 50, h = 50},
{x = g_x + 55, y = g_y, w = 50, h = 50},
{x = g_x + 110, y = g_y, w = 50, h = 50},
{x = g_x + 165, y = g_y, w = 50, h = 50},
{x = g_x + 220, y = g_y, w = 50, 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,w = 50,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 - 蓝色矩形是按比例保留其原始形状的。这正是我想实现的,但是在我这种情况下,白色矩形会像第二个截图一样被拉伸。
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

我想你想要缩放位置,而不是缩放大小...
所以保留这些:
但去掉这些: