OOGL.GUI.Widgets.ListBox.DrawToFrameBuffer C# (CSharp) Méthode

DrawToFrameBuffer() public méthode

public DrawToFrameBuffer ( double gameTime ) : void
gameTime double
Résultat void
        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);
                }
            }
        }