public override void DrawToFrameBuffer(double gameTime)
{
base.DrawToFrameBuffer(gameTime);
int size = clientRectangle.Height;
if (size < 5) return;
RectangleF fontSize = frameMgr.textPrinter.Measure("0", Font).BoundingBox;
Rectangle screenRectClient = ClientToScreen(clientRectangle);
object[] items = Items;
if (items.Length == 0) return;
Rectangle[] itemRects = new Rectangle[items.Length];
for (int i = 0; i < items.Length; i++)
{
itemRects[i] = new Rectangle(screenRectClient.X, screenRectClient.Y + ((int)fontSize.Height * i), screenRectClient.Width, (int)fontSize.Height);
}
screenRectItems = itemRects;
List<PositionColor> verts = new List<PositionColor>();
for (int i = 0; i < items.Length; i++)
{
if (screenRectItems[i].Bottom <= screenRectClient.Bottom)
{
Rectangle frameRectDropListItem = ScreenToFrame(screenRectItems[i]);
Color color = (i == selectedIndex) ? Color.SteelBlue : Color.Gray;
verts.Add(new PositionColor(new Vector3(frameRectDropListItem.Left, frameRectDropListItem.Top, 0f), color));
verts.Add(new PositionColor(new Vector3(frameRectDropListItem.Left, frameRectDropListItem.Bottom, 0f), color));
verts.Add(new PositionColor(new Vector3(frameRectDropListItem.Right, frameRectDropListItem.Top, 0f), color));
verts.Add(new PositionColor(new Vector3(frameRectDropListItem.Left, frameRectDropListItem.Bottom, 0f), color));
verts.Add(new PositionColor(new Vector3(frameRectDropListItem.Right, frameRectDropListItem.Bottom, 0f), color));
verts.Add(new PositionColor(new Vector3(frameRectDropListItem.Right, frameRectDropListItem.Top, 0f), color));
}
}
PositionColor.Draw(BeginMode.Triangles, verts.ToArray());
for (int i = 0; i < items.Length; i++)
{
if (screenRectItems[i].Bottom <= screenRectClient.Bottom)
{
Rectangle frameRectDropListItem = ScreenToFrame(screenRectItems[i]);
Frame.DrawText(Font, items[i].ToString(), frameRectDropListItem, DrawTextFormat.Left | DrawTextFormat.Bottom, Color.Black);
}
}
}