示例#1
0
        private void RenderLabel(Label label)
        {
            Point loc = label.AbsoluteLocation();

            ConsoleAdapter.MoveCursor(loc.Left, loc.Top);
            if (label.Text.Contains('\n'))
            {
                var textLines = label.Text.Split('\n').Select(t => t.Replace('\r', ' ')).ToArray();

                if (textLines.Length > 6)
                {
                    var textsList = textLines.Take(6).ToList();
                    textsList.Add("...");
                    textLines = textsList.ToArray();
                }
                else
                {
                    textLines = textLines;
                }

                var startTop = loc.Top;
                foreach (var text in textLines)
                {
                    var currentText = text;
                    if (label.ParentScoreboard != null)
                    {
                        var supposedTextLength = label.ParentScoreboard.Size.Width - label.Location.Left -
                                                 (label.ParentScoreboard.IsBorderVisible ? 4 : 2);
                        if (text.Length > supposedTextLength)
                        {
                            currentText = text.Substring(0, supposedTextLength) + "...";
                        }
                    }

                    ConsoleAdapter.MoveCursor(loc.Left, startTop);
                    ConsoleAdapter.Write(currentText);
                    startTop++;
                }
            }
            else
            {
                ConsoleAdapter.MoveCursor(loc.Left, loc.Top);
                ConsoleAdapter.Write(label.Text);
            }
        }