Пример #1
0
        /// <summary>
        /// Получить символ, в данный момент находящийся в окружности выбора букв (если такого нет - '\0')
        /// </summary>
        /// <returns>Символ, находящийся в окружности выбора букв. Если такой отсутствует, возвращается символ '\0'</returns>
        public char GetRoundedChar()
        {
            if (LettersStream.Count == 0)
            {
                return('\0');
            }
            Letter firstLetter = LettersStream.Peek();
            int    letterX     = (int)firstLetter.position.X + g_fontSize / 2; // получаем координату X серединки буквы

            if (letterX < g_circleRectLeftUpPoint.X + g_circleDiametr && letterX > g_circleRectLeftUpPoint.X)
            {
                return(firstLetter.letter);
            }
            else
            {
                return('\0');
            }
        }
Пример #2
0
 /// <summary>
 /// Свдинуть отображаемые буквы влево
 /// </summary>
 /// <param name="pushValue">Величина сдвига (в пикселях). По умолчанию величина равна двум</param>
 private void PushQueueForward(int pushValue = 2)
 {
     // Если отображаемых букв нет - двигать нечего, выходим
     if (!LetterStreamIsEmpty)
     {
         // Обходим очередь и уменьшаем координату X каждой вершины на величину сдвига
         foreach (var letter in LettersStream)
         {
             letter.position.X -= pushValue;
         }
         // Если первая буква ушла за линию - она исчезает
         if (LettersStream.Peek().position.X <= 0)
         {
             LettersStream.Dequeue();
             // Оповещаем о том, что одна буква ушла из очереди, т.к. была пропущена
             LetterMissedEvt?.Invoke();
         }
     }
 }