Panel
< Zh
Jump to navigation
Jump to search
vgui::Panel
是所有VGUI 元素的基类。作为屏幕上的矩形区域,它具备绘制自身、处理事件和管理子元素的能力。

核心函数
基础控制
SetVisible(bool)
bool IsVisible()
bool IsFullyVisible()
- 不可见面板及其子元素不会参与绘制/更新,也不接收输入事件。
IsFullyVisible()
会递归检查父级可见性 SetEnabled(bool)
IsEnabled()
- 禁用状态下面板不接收输入,通常显示为灰色
OnThink()
- 面板可见时每帧调用待完善:
Think()
是否已废弃?非可见面板是否仍会执行? void OnTick()
- 通过
ivgui() ->AddTickSignal()
注册后定期触发
布局管理
bool IsProportional()
SetProportional(bool)
证实:比例模式下,布局值基于640*480分辨率计算。例如坐标(64,48)始终对应屏幕10%位置,但无法自适应宽高比变化。新增的
c
/r
.res关键字可解决此问题SetPos(), GetPos(), SetSize(), GetSize(), SetBounds(), GetBounds(), GetWide(), SetWide(), GetTall(), SetTall()
- 位置/尺寸控制函数集
绘制系统
面板通过下列函数分层绘制(默认启用PaintBackground()
和Paint()
):
PaintBackground()
SetPaintBackgroundEnabled(bool)
- 绘制面板背景
Paint()
SetPaintEnabled(bool)
- 绘制面板内容
证实:不包含子元素
PaintBorder()
SetPaintBorderEnabled(bool)
SetBorder(IBorder *border)
IBorder *GetBorder()
- 边框绘制系统(需先调用
SetBorder()
)- 通过
IScheme ::GetBorder()
获取边框实例 - 参考
swarm/resource/sourcescheme.res
中的定义示例
- 通过
PostChildPaint()
SetPostChildPaintEnabled(bool)
- 在子元素绘制完成后执行叠加绘制
SetSkipChildDuringPainting(Panel *child)
- 跳过指定子元素绘制
证实:但不影响逻辑更新
SetAlpha(int)
- 设置透明度(0-255,影响自身及子元素)
层级关系
面板采用单父节点多子节点的树形结构,非弹出式子元素受父面板区域约束。
父级控制
Panel *GetParent()
VPANEL GetVParent()
SetParent(Panel*)
或SetParent(VPANEL)
- 获取/设置父面板
bool HasParent(VPANEL)
- 检测指定面板是否在父级链中
子级管理
int GetChildCount()
Panel *GetChild(int index)
Panel *FindChildByName(char* childName, bool recurseDown = false)
- 子元素访问接口
OnChildAdded(VPANEL child)
- 子元素添加事件回调
弹出窗口
脚本参数
用于.res
布局文件的配置项:
fieldName
<字符串 >- 控件名称(默认NULL)
wide
<整数 >tall
<整数 >- 初始尺寸
xpos
<整数 >ypos
<整数 >- 定位坐标(支持特殊修饰符):
xpos 300
- 距左边界300像素xpos r300
- 距右边界300像素xpos c0
- 水平居中
PinCorner
<choices>- 锚点位置:
TOPLEFT
(默认)TOPRIGHT
BOTTOMLEFT
BOTTOMRIGHT
PinnedCornerOffsetX
<整数 >PinnedCornerOffsetY
<整数 >UnpinnedCornerOffsetX
<整数 >UnpinnedCornerOffsetY
<整数 >- [待完善]
zpos
<整数 >- Z序(默认1,值越大显示层级越高)
IgnoreScheme
<布尔值 >- 待完善: 是否忽略皮肤配置
visible
<布尔值 >- 可见性
enabled
<布尔值 >- 可用状态
tabPosition
<整数 >- Tab键聚焦顺序(0-255)
tooltiptext
<字符串 >- 悬停提示文本(主机平台无效)
paintbackground
<布尔值 >paintborder
<布尔值 >- 背景/边框绘制开关(默认-1不修改)
AutoResize
<choices>- 自适应调整模式:
NO
(默认不调整)RIGHT
- 右边界DOWN
- 下边界DOWNANDRIGHT
- 右下双向