Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> RichTextBox текст разным цветом, не равномерно закрашивается,какой то баг 
:(
    Опции темы
nailk2
Дата 29.11.2010, 02:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 29.11.2010

Репутация: нет
Всего: нет



Доброго времени суток!
есть проблема,решение которой найти не могу. Короткая предыстория: начал изучать WPF,дали в универе задание - сделать подобие клавиатурного тренажера. сделал наброски базовой логики для работы с текстом. есть поле с исходным текстом(RichTextBox) после старта, по одному символу, таймер начинает закрашивать красным цветом фон текста. Когда нажимается клавиатура,текст,также с первой буквы, начинает закрашиваться синим. Если нажатие клавиш на клавиатуре опережает тиканье таймера,то есть закрашиваемая область таймером остаётся позади ,то таймер будет закрашивать синим,а опередившие таймер нажатия на клавиатуру,теперь будут закрашивать текст зеленым. почти все работает. Но. не плавно как то.
вот сама проблема: на первый тик таймера,как и положено закрашивается 1 буква,на 2й тик и 3й закрашивания не происходит,но на все последующие тики таймера как и положено закрашиваются по одному символу. баг это или я что то не так делаю? эта же самая история и при нажатиях на клавиши клавы, и когда начинаешь обганять таймер или он тебя. вообщем вот код,где происходит закрашивание таймером и при нажатиях на клаву.
Код

public void runTimer(int intervalMillisec)
        {
            timer1.Interval = new TimeSpan(0, 0, 0, 0, intervalMillisec);
            sbb.Color = Colors.Blue; 
            sbb.Opacity = 0.4;
            sbr.Color = Colors.Red;
            sbr.Opacity = 0.4;
            sbg.Color = Colors.Green;
            sbg.Opacity = 0.4;
            
            timer1.Start();
        }
        private TextPointer tp1;
        private TextPointer tp2;
        private TextPointer tp11;
        private TextPointer tp22;
        private TextRange range1;
        private TextRange range2;
        private int pos = 1;
        private int pos2 = 1;
        private SolidColorBrush sbb = new SolidColorBrush();
        private SolidColorBrush sbr = new SolidColorBrush();
        private SolidColorBrush sbg = new SolidColorBrush();
        int curColor = 1;
       
        private void Timer1_Tick(object sender, EventArgs e)
        {
            
            if (pos >= textLengh)
                timer1.Stop();
            tp1 = par.ContentStart.GetPositionAtOffset(pos);
            tp2 = par.ContentStart.GetPositionAtOffset(pos+1);
            range1 = new TextRange(tp1, tp2);
            if(pos>=pos2)
                range1.ApplyPropertyValue(TextElement.BackgroundProperty,sbr);             
            else
                range1.ApplyPropertyValue(TextElement.BackgroundProperty, sbb); 
            pos++;
            System.Windows.MessageBox.Show("");
        }
        public void brushNextLetter()
        {            
            if (pos2 > textLengh)
                return;
            tp11 = par.ContentStart.GetPositionAtOffset(pos2);
            tp22 = par.ContentStart.GetPositionAtOffset(pos2 + 1);
            range2 = new TextRange(tp11, tp22);
            if(pos2>pos)
                range2.ApplyPropertyValue(TextElement.BackgroundProperty, sbg);
            else
                range2.ApplyPropertyValue(TextElement.BackgroundProperty, sbb);
            pos2++;
        }


еще бы хотелось выложить исходники и сам ехешник,что бы сами смогли прочувствовать,и понять что же происходит.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0466 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.