Panel
< Zh
		
		
		
		Jump to navigation
		Jump to search
		vgui::Panel是所有VGUI元素的基类。作为屏幕上的矩形区域,它具备绘制自身、处理事件和管理子元素的能力。
 注意:注意与传送门2建筑面板区分
注意:注意与传送门2建筑面板区分核心函数
基础控制
- 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%位置,但无法自适应宽高比变化。新增的 证实:比例模式下,布局值基于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- 右下双向
 

























