Lua math,检测矩形是否在其他矩形内

我正在尝试制作一个类似于GMOD的vgui库的UI系统(https://wiki.facepunch.com/gmod/vgui)。在这个库中,您可以创建一个元素,然后它的子元素。父元素的子元素将被父元素的大小裁剪。因此,如果您有一个宽度和高度为100的红色框,那么红色框的子元素就不能在红色框的外面绘制,以此类推。

点赞
用户1847592
用户1847592
local parent_x = Parent.INTERNAL_VARS.draw_start_x  // 声明 parent_x 并赋值为 Parent.INTERNAL_VARS.draw_start_x
local parent_y = Parent.INTERNAL_VARS.draw_start_y  // 声明 parent_y 并赋值为 Parent.INTERNAL_VARS.draw_start_y
local parent_width  = Parent._width  // 声明 parent_width 并赋值为 Parent._width
local parent_height = Parent._height // 声明 parent_height 并赋值为 Parent._height

v.INTERNAL_VARS.draw_start_x = parent_x + v.x  // 将 v.INTERNAL_VARS.draw_start_x 的值设置为 parent_x + v.x
v.INTERNAL_VARS.draw_start_y = parent_y + v.y  // 将 v.INTERNAL_VARS.draw_start_y 的值设置为 parent_y + v.y

local child_x = v.INTERNAL_VARS.draw_start_x // 声明 child_x 并赋值为 v.INTERNAL_VARS.draw_start_x
local child_y = v.INTERNAL_VARS.draw_start_y // 声明 child_y 并赋值为 v.INTERNAL_VARS.draw_start_y
local child_width  = v._width // 声明 child_width 并赋值为 v._width
local child_height = v._height // 声明 child_height 并赋值为 v._height

local x = math.max(child_x, parent_x) // 声明 x 并赋值为 child_x 和 parent_x 中的最大值
local y = math.max(child_y, parent_y) // 声明 y 并赋值为 child_y 和 parent_y 中的最大值

draw.DrawOutlinedRect(
   x,
   y,
   math.min(child_x + child_width,  parent_x + parent_width ) - x, // 设定矩形的宽度
   math.min(child_y + child_height, parent_y + parent_height) - y // 设定矩形的高度
)
2021-02-26 11:28:02