Re: Загадочное Окно
Здравствуйте, VITO.
V> Как можно сделать окошко (подобные есть в DUTraffic, ReGet Deluxe, FlashGet,
V> Download Master)
V> которое могло бы быть прозрачным и отображать в себе иконки +
V> анимацию + разную текстовую информацию?
V> Больше всего моя идея схожа с окошком в программе DUTraffic (он тоже на Delphi)
V> но я ни как не пойму как в окошке отображается информация (это
V> график) которая строится на лету и всё это ещё движется справа на
V> лево?
V> Если хотя бы кто-то что знает напишите хоть что-то чтобы я смог
V> создать похожее плавающее окошко.
Само такое окошко использует стиль формы fsStayOnTop для расположения
поверх окон. Возможно также нужно задать BorderStyle. Прозрачностью
управляет св-во AlphaBlendValue (только если Вы пишете под WinXP или
Win2000, а еще если Ваша Делфя нн ниже, кажется, 5-й версии).
Изменения значений AlphaBlendValue будет проявлятся при установленном
AlphaBlend в True.
С графиком, строящемся налету, посложнее. Нужно, думаю, создать
переменную типа TCanvas и строить график на ней, а потом отображать ее
на канву формы. Причем, график, как я понимаю, имеет две фазы работы -
сначала он строится в некотором диапазоне по оси Х. Потом, когда этот
диапазон заполнится, начинается сдвиг начерченного влево. Это
подсказывает алгоротм вычерчивания - до определенного значения
абсциссы ее нужно увеличивать и рисовать в измененой полосе, скажем
так. Как только абсцисса достигнет того значения, при котором график
должен сдвигаться, она перестает изменяться, начинает работать сдвиг
нарисованного влево и прорисовка очередной порции графика. Ширина
очередной порции равна тому, насколько сдвигается график (вернее
наоборот). То есть, с помощью метода CopyRect ту, часть графика,
которая должна сдвинуться влево, копируем на левую сторону канвы, и
строем новый кусок графика справа. А потом копируем эту канву на канву
формы. В принципе, можно попробовать сразу все это делать на канве
формы, но когда я делал бегущую строку, непосредственный способ давал
подрагивание.
Простите, если что непонятно написал, готов ответить на вопросы.