Здравствуйте, <Аноним>, Вы писали:
А>сделал бегущюю строку,взял Panel ну и на нее кидаю label,которые потом двигаю label.Left,двигаю циклически, тоесть когда какой-то label ушел из поля видимости помещая его за тем, за которым он шел,проблема в том, что если добавляю более 20 таких label,строка начинает потреблять 100% CPU, так вот не могу понять из-за чего такое может быть ?!( подскажитеЮ если кто знает, наверняка же кто нибудь писал бегущюю строку !
Проблемв в том что ты изменяешь свойство, а свойство — это вызов метода, который делает много работы.
Я бы вообще отказался от Label, и просто рисовал бы на контроле.
Что тебе мешает создать свой контрол, примерно вот так. Это вариант будет просто летать.
public class Foo : System.Windows.Forms.Control
{
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
{
e.Graphics.DrawString("foo", ..., x, y);
base.OnPaint(e);
}
}
не забудь добавить перерисовку по таймеру (ивалидэйт), чтобы двигались твои бегущие строки.
Используй таймер из винформс.
... << RSDN@Home 1.2.0 alpha rev. 786>>