You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Irrlicht引擎中如何设置GUI按钮的位置?

解决Irrlicht中GUI按钮位置调整的问题

嘿,我来帮你搞定这个按钮位置的问题!其实你已经在创建按钮的时候用到了位置设置的核心逻辑,只是可能没完全意识到,另外还有创建后动态调整的方法,我给你详细拆解:

一、创建按钮时直接设置位置

你创建按钮的代码里,那个irr::core::rect<irr::s32>(200, 110, 600, 200)就是按钮的位置+尺寸定义:

  • 前两个参数(200, 110)是按钮左上角的绝对坐标(和你用draw2DImage时的坐标系完全一致)
  • 后两个参数(600, 200)是按钮右下角的绝对坐标

如果要在创建时调整位置,直接修改这四个数值就行。比如想把按钮移到窗口左上角区域,就改成:

irr::gui::IGUIButton *newGameButton = gui->addButton(irr::core::rect<irr::s32>(50, 50, 250, 120), 0, -1, L"NEW GAME");

这样按钮左上角就在(50,50),右下角在(250,120),位置和大小就一起搞定了。

二、创建后动态调整按钮位置

如果按钮已经创建完成,想要后续修改位置,有两种简单的方法:

方法1:用setPosition+setSize分别调整

IGUIButton继承自IGUIElement,可以直接用这两个方法分别设置位置和尺寸:

// 设置按钮左上角的新位置(比如移到(300,150))
newGameButton->setPosition(irr::core::position2d<irr::s32>(300, 150));
// 设置按钮的尺寸(宽度400,高度90,保持原有大小的话可以跳过这个步骤)
newGameButton->setSize(irr::core::dimension2d<irr::s32>(400, 90));

方法2:直接修改按钮的矩形区域

如果你想一次性调整位置和尺寸,可以直接获取并修改按钮的rect:

// 获取当前按钮的绝对矩形
irr::core::rect<irr::s32> btnRect = newGameButton->getAbsoluteRect();
// 修改左上角坐标,同时保持原有尺寸
btnRect.UpperLeftCorner = irr::core::position2d<irr::s32>(300, 150);
btnRect.LowerRightCorner = btnRect.UpperLeftCorner + btnRect.getSize();
// 应用新的矩形设置
newGameButton->setAbsoluteRect(btnRect);

注意:如果你的按钮有父GUI元素(addButton的第二个参数不是0),那坐标会是相对父元素的,这时候可以用setRelativeRect来设置相对位置,逻辑和上面一致。

试试上面的方法,应该就能轻松调整按钮位置啦!

内容的提问来源于stack exchange,提问作者YPR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:42:22