 |
бегущая строка - Вопросы и ответы, обсуждения - Ваши вопросы по C# только в данном разделе |
22.09.2011, 15:39
|
#1
|
|
|
|
Разведчик
|
 Регистрация: 22.03.2010
 Сообщений: 8
 Популярность: -29
 Сказал(а) спасибо: 3
Поблагодарили 4 раз(а) в 4 сообщениях
|
бегущая строка
Ребят, как сделать бегущую строку в c# ?
|
|
|
22.09.2011, 15:55
|
#2
|
|
|
|
Разведчик
|
 Регистрация: 14.07.2011
 Сообщений: 27
 Популярность: 244
 Сказал(а) спасибо: 26
Поблагодарили 47 раз(а) в 37 сообщениях
|
бегущая строка
В цикле выводить последовательно символы строки, стирать все это дело, выводить заново 
Если нужен код, то уточни хотя бы в консоли ты это делаешь, или в формах - тогда, если не будет лень, что-нибудь накидаю)
Код:
public void printTicker(string line)
{
Action act;
int i = line.Length - 1; // Это необходимо для перезаписи первого символа
int j = 0; // Эта переменная поможет нам передвигать все символы в строке на 1 оффсет вперед
StringBuilder str = new StringBuilder(); // Можно вобщем то и массив char'ов юзать.. Но я решил воспользоваться этим классом
str.Length = line.Length
act = new Action(() => //Это что бы нам не кидали ошибку, о попытке доступа к контролу из стороннего потока :)
{
textBox1.Text = str.ToString();
});
while (true)
{
if (i < 0)
{
i = line.Length - 1; /*Все символы сдвигаются на 1 оффсет, путем записи на их место предыдущего символа, однако самый первый
символ так записать нельзя, ибо индекс массива не может быть отрицательным, и нам нужен символ стоящий в начальной строке перед первым символом конечной :) посему на его место пишется символ с индексом i из исходной строки,
в переменной i содержится индекс символа, предшествующего первому символу конечной строки, когда конечная строка идентична начальной и, соответственно, i уменьшается до отрицательного числа, переменной i надо снова
присвоить индекс последнего символа начальной строки, таким образом строка будет отображаться по кругу*/
//Ох и загнул я.. Сам не понял что сказал)
}
for (j = line.Length - 1; j > 0; --j)
{
str[j] = str[j - 1]; //Передвигаем символы на 1 позицию
}
str[0] = line[i]; //Пишем 1й чар
this.BeginInvoke(act); //Записываем строку в текстБокс из основного потока :)
--i;
Thread.Sleep(400); //Задержка :)
}
}
p.s.Добавь в проект BackgroundWorker, в обработчике которого вызывай эту функцию с текстом который надо вывести.
p.p.s. Вместо текст бокса, как ты и сам понимаешь, можно использовать и другие объекты.
p.p.p.s Для Thread.Sleep() необходимо пространство имен System.Threading
________________
Ну что лежишь ты Мурка, на краю дороги
Гробоваая крыышкаа над тобооой Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Последний раз редактировалось Hermein; 23.09.2011 в 09:21.
|
|
|
Пользователь сказал cпасибо:
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
[Помогите!] динамическая строка
|
lolwut98 |
Вопросы и ответы, обсуждения |
2 |
20.09.2011 21:04 |
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 20:16.
|
 |