public override void DrawToFrameBuffer(double gameTime)
{
base.DrawToFrameBuffer(gameTime);
Rectangle frameClientRect = ScreenToFrame(ClientToScreen(clientRectangle));
List<PositionColor> verts = new List<PositionColor>();
Color color = BackgroundColor;
float topSkew;
float bottomSkew;
if (isPressed)
{
topSkew = 0.0f;
bottomSkew = -.75f;
}
else
{
topSkew = 0.5f;
bottomSkew = -0.5f;
}
verts.Add(new PositionColor(new Vector3(frameClientRect.Left, frameClientRect.Top, 0f), Gradient(color, topSkew)));
verts.Add(new PositionColor(new Vector3(frameClientRect.Left, frameClientRect.Bottom, 0f), Gradient(color, bottomSkew)));
verts.Add(new PositionColor(new Vector3(frameClientRect.Right, frameClientRect.Top, 0f), Gradient(color, topSkew)));
verts.Add(new PositionColor(new Vector3(frameClientRect.Left, frameClientRect.Bottom, 0f), Gradient(color, bottomSkew)));
verts.Add(new PositionColor(new Vector3(frameClientRect.Right, frameClientRect.Bottom, 0f), Gradient(color, bottomSkew)));
verts.Add(new PositionColor(new Vector3(frameClientRect.Right, frameClientRect.Top, 0f), Gradient(color, topSkew)));
PositionColor.Draw(BeginMode.Triangles, verts.ToArray());
Frame.DrawText(Font, text, ScreenToFrame(ClientToScreen(clientRectangle)), drawTextFormat, textColor);
}