/// <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'); } }
/// <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(); } } }