public override void Draw(GameTime gameTime)
{
if (!_hidden)
{
_spriteBatch.Begin();
if (IsHit(Mouse.GetState().X, Mouse.GetState().Y))
{
if (_bstat == ButtonStatus.down)
{
_bstat = ButtonStatus.downon;
}
else
if (_bstat == ButtonStatus.normal)
{
_bstat = ButtonStatus.mouseon;
}
}
else
{
if (_bstat == ButtonStatus.downon)
{
_bstat = ButtonStatus.down;
}
else if (_bstat == ButtonStatus.mouseon)
{
_bstat = ButtonStatus.normal;
}
}
if (_label != "")
{
Vector2 _textPos = _font.MeasureString(_label);
switch (_bstat)
{
case ButtonStatus.down:
case ButtonStatus.mouseon:
case ButtonStatus.downon:
_spriteBatch.Draw(_background, _displayRect, new Rectangle(39, 6, 1, 1), Color.Black);
_spriteBatch.Draw(_background, new Rectangle(_displayRect.X + 1, _displayRect.Y + 1, _displayRect.Width - 2, _displayRect.Height - 2), new Rectangle(39, 6, 1, 1), _focus ? Color.Blue : Color.White);
_spriteBatch.DrawString(_font, _label, new Vector2(_displayRect.Left + (_displayRect.Width - _textPos.X) / 2, _displayRect.Top + (_displayRect.Height - _textPos.Y) / 2), _focus ? Color.White: Color.Black);
break;
default:
_spriteBatch.Draw(_background, _displayRect, new Rectangle(39, 6, 1, 1), _focus ? Color.Blue : Color.White);
_spriteBatch.Draw(_background, new Rectangle(_displayRect.X + 1, _displayRect.Y + 1, _displayRect.Width - 2, _displayRect.Height - 2), new Rectangle(39, 6, 1, 1), _focus ? Color.DarkBlue : Color.Black);
_spriteBatch.DrawString(_font, _label, new Vector2(_displayRect.Left + (_displayRect.Width - _textPos.X) / 2, _displayRect.Top + (_displayRect.Height - _textPos.Y) / 2), Color.White);
break;
}
}
else
{
switch (_bstat)
{
case ButtonStatus.mouseon:
case ButtonStatus.down:
_spriteBatch.Draw(_buttonStates[1], new Rectangle(_displayRect.X, _displayRect.Y, Math.Min(_displayRect.Width, _buttonStates[1].Width), Math.Min(_displayRect.Height, _buttonStates[1].Height)), new Rectangle(0, 0, _buttonStates[1].Width, _buttonStates[1].Height), Color.White);
break;
case ButtonStatus.downon:
default:
_spriteBatch.Draw(_buttonStates[0], new Rectangle(_displayRect.X, _displayRect.Y, Math.Min(_displayRect.Width, _buttonStates[0].Width), Math.Min(_displayRect.Height, _buttonStates[0].Height)), new Rectangle(0, 0, _buttonStates[0].Width, _buttonStates[0].Height), Color.White);
break;
}
}
_spriteBatch.End();
}
}