本文整理汇总了C++中Panel::GetBounds方法的典型用法代码示例。如果您正苦于以下问题:C++ Panel::GetBounds方法的具体用法?C++ Panel::GetBounds怎么用?C++ Panel::GetBounds使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Panel
的用法示例。
在下文中一共展示了Panel::GetBounds方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnSizeChanged
//-----------------------------------------------------------------------------
// Purpose: Callback for when the panel size has been changed
//-----------------------------------------------------------------------------
void EditablePanel::OnSizeChanged(int wide, int tall)
{
BaseClass::OnSizeChanged(wide, tall);
InvalidateLayout();
int dx = wide - _baseWide;
int dy = tall - _baseTall;
for (int i = 0; i < GetChildCount(); i++)
{
// perform auto-layout on the child panel
Panel *child = GetChild(i);
int x, y, w, t;
child->GetBounds(x, y, w, t);
if (child->GetPinCorner() == PIN_TOPRIGHT || child->GetPinCorner() == PIN_BOTTOMRIGHT)
{
// move along with the right edge
x += dx;
}
if (child->GetPinCorner() == PIN_BOTTOMLEFT || child->GetPinCorner() == PIN_BOTTOMRIGHT)
{
// move along with the lower edge
y += dy;
}
// check for resize
if (child->GetAutoResize() == AUTORESIZE_RIGHT || child->GetAutoResize() == AUTORESIZE_DOWNANDRIGHT)
{
w += dx;
}
if (child->GetAutoResize() == AUTORESIZE_DOWN || child->GetAutoResize() == AUTORESIZE_DOWNANDRIGHT)
{
t += dy;
}
// make sure the child isn't too big...
if(x+w>wide)
{
continue;
}
if(y+t>tall)
{
continue;
}
child->SetBounds(x, y, w, t);
child->InvalidateLayout();
}
Repaint();
// update the baselines
_baseWide = wide;
_baseTall = tall;
}
示例2: ScrollToPanelItem
//=============================================================================
void GenericPanelList::ScrollToPanelItem( unsigned short index )
{
if( index < m_PanelItems.Count() )
{
Panel* targetPanelItem = m_PanelItems[index];
int targetX, targetY, targetWide, targetTall;
targetPanelItem->GetBounds( targetX, targetY, targetWide, targetTall );
int x, y, wide, tall;
m_PnlItemRegion->GetBounds( x, y, wide, tall );
int firstVisi = GetFirstVisibleItemNumber();
int lastVisi = GetLastVisibleItemNumber();
if( index <= firstVisi || index >= lastVisi ) // outside or on the border (allow re-alignment if it's at the border)
{
int travelDistance = 0;
if( index <= firstVisi ) // the target item is above the clipping region
{
travelDistance = targetY - m_PanelItemBorder; //align to top
}
else // below the clipping region
{
travelDistance = targetY - ( lastVisi - firstVisi ) * ( targetTall + m_PanelItemBorder ) - m_PanelItemBorder; //align to be last item
int topX, topY;
m_PanelItems[0]->GetPos( topX, topY );
if( topY - travelDistance > 0 ) //don't pull the topmost item away from the top
travelDistance = topY - m_PanelItemBorder;
}
m_ScrVerticalScroll->SetValue( m_ScrVerticalScroll->GetValue() + travelDistance );
for( int i = 0; i < m_PanelItems.Count(); ++i )
{
int itemX, itemY;
m_PanelItems[i]->GetPos( itemX, itemY );
m_PanelItems[i]->SetPos( itemX, itemY - travelDistance );
}
UpdateArrows( );
UpdatePanels( );
}
}
}
示例3: GetRelativeOffset
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
int AnimationController::GetRelativeOffset( AnimAlign_t& align, bool xcoord )
{
if ( !align.relativePosition )
return 0;
Panel *panel = GetParent()->FindChildByName(g_ScriptSymbols.String(align.alignPanel), true);
if ( !panel )
return 0;
int x, y, w, h;
panel->GetBounds( x, y, w, h );
int offset =0;
switch ( align.alignment )
{
default:
case a_northwest:
offset = xcoord ? x : y;
break;
case a_north:
offset = xcoord ? ( x + w ) / 2 : y;
break;
case a_northeast:
offset = xcoord ? ( x + w ) : y;
break;
case a_west:
offset = xcoord ? x : ( y + h ) / 2;
break;
case a_center:
offset = xcoord ? ( x + w ) / 2 : ( y + h ) / 2;
break;
case a_east:
offset = xcoord ? ( x + w ) : ( y + h ) / 2;
break;
case a_southwest:
offset = xcoord ? x : ( y + h );
break;
case a_south:
offset = xcoord ? ( x + w ) / 2 : ( y + h );
break;
case a_southeast:
offset = xcoord ? ( x + w ) : ( y + h );
break;
}
return offset;
}
示例4: OnSizeChanged
//-----------------------------------------------------------------------------
// Purpose: Callback for when the panel size has been changed
//-----------------------------------------------------------------------------
void EditablePanel::OnSizeChanged(int wide, int tall)
{
BaseClass::OnSizeChanged(wide, tall);
InvalidateLayout();
for (int i = 0; i < GetChildCount(); i++)
{
// perform auto-layout on the child panel
Panel *child = GetChild(i);
if ( !child )
continue;
int x, y, w, h;
child->GetBounds( x, y, w, h );
int px, py;
child->GetPinOffset( px, py );
int ox, oy;
child->GetResizeOffset( ox, oy );
int ex;
int ey;
AutoResize_e resize = child->GetAutoResize();
bool bResizeHoriz = ( resize == AUTORESIZE_RIGHT || resize == AUTORESIZE_DOWNANDRIGHT );
bool bResizeVert = ( resize == AUTORESIZE_DOWN || resize == AUTORESIZE_DOWNANDRIGHT );
PinCorner_e pinCorner = child->GetPinCorner();
if ( pinCorner == PIN_TOPRIGHT || pinCorner == PIN_BOTTOMRIGHT )
{
// move along with the right edge
ex = wide + px;
x = bResizeHoriz ? ox : ex - w;
}
else
{
x = px;
ex = bResizeHoriz ? wide + ox : px + w;
}
if ( pinCorner == PIN_BOTTOMLEFT || pinCorner == PIN_BOTTOMRIGHT )
{
// move along with the right edge
ey = tall + py;
y = bResizeVert ? oy : ey - h;
}
else
{
y = py;
ey = bResizeVert ? tall + oy : py + h;
}
// Clamp..
if ( ex < x )
{
ex = x;
}
if ( ey < y )
{
ey = y;
}
child->SetBounds( x, y, ex - x, ey - y );
child->InvalidateLayout();
}
Repaint();
}