CMyLabel - анимация текста
Все исходники / Язык программирования C++ / OS Windows / Desktop / Исходники приложений / CMyLabel - анимация текстаБаза построения С++, MFC, GDI
Создавая какое-либо приложение иногда требуется разместить прозрачную надпись в окне над красивой картинкой или просто на цветном фоне. Текстовая метка CMyLabel построена на базе MFC (Microsoft Foundation Classes), для графических эффектов применена библиотека GDI. Замена текста данной метки будет происходить с различными эффектами. Текстовая надпись класса CMyLabel украсит любое окно приложения Windows.
Эффект - вращение надписи
Эффект первый - вращение надписи, основан на обмане зрения. Плавно уменьшаем ширину шрифта до минимальной, изменяем текст, затем плавно восстанавливаем ширину шрифта. На самом деле вращение не происходит, но наше воображение волей-неволей представляет эти изменения как вращение. На этом эффекте основано и вращение карт в карточных играх, без использования библиотек DirectX или OpenGL (хотя в принципе и DirectX и OpenGL используют похожий эффект, так как мониторы пока еще не объемные).
Эффект - смена текста в виртуальной глубине окна
Эффект второй - перемещение текста вдаль и возврат обратно. Плавно уменьшаем размер шрифта до 1, изменяем текст, плавно восстанавливаем размер шрифта. Опять же наше воображение воспринимает это гораздо красивее. Наши глаза видят, что текст улетает вдаль и прилетает "оттуда" уже другой текст.
Эффект - смывание и восстановление надписи
Эффект третий - смывание надписи и восстановление ее. Здесь эффект достигается немного сложнее. Одним из способов создания этого эффекта - использование контуров.
.
void CTestMyLabelDlg::OnPaint()
{
CPaintDC dc(this);
dc.BeginPath();
dc.Rectangle(&m_SimpleRect);
dc.EndPath();
dc.SelectClipPath(RGN_DIFF);
}
Параметр RGN_DIFF
позволяет нам отсекать контур образованный прямоугольником m_SimpleRect
и далее dc.EndPath()
разрешает нам рисовать только вне этого прямоугольника. Размер прямоугольника должен совпадает с размером габаритного прямоугольника надписи. m_SimpleRect
полностью "закрывает" нашу надпись. Эффект смывания надписи получается так: сначала высота m_SimpleRect
равна нулю, выводим произвольный текст, плавно увеличиваем высоту прямоугольника m_SimpleRect
до тех пор, пока текст полностью не исчезнет, изменяем надпись на новый текст, плавно уменьшаем высоту m_SimpleRect
до нуля, тем самым открывая новую надпись. Нам кажется, что текст "смывается водой", а затем, когда "вода уходит" появляется другой текст.
Эффект - скатывание и раскатывание надписи
Эффект четвертый - скатывание и раскатывание надписи. Последовательно, по одному, удаляем из текущего текста все символы, в оперативной памяти изменяем надпись и обратно последовательно, по одному символу выводим новый текст.
CMyLabel - класс графических эффектов смены текста
Вышеописанные эффекты изменения текста генерирует класс CMyLabel
, полностью готовый к использованию в программировании ваших приложениях. CMyLabel
создан при помощи MFC на языке программирования С++. Класс CMyLabel
был использован при написании карточных игр NineK, BuraK. В этих играх можно наглядно увидеть красивые эффекты смены текста. CMyLabel
можно применить и в .NET программировании, если одеть его в оболочку динамической библиотеки .dll
Исходник имеет подробный комментарий важных строк кода. Среда программирования Visual C++ 7.0, Visual Studio .NET 2003 и выше.
Скачать исходник
- Файл: cmylabel_vs7.zip
- Размер: 178 Кбайт
- Загрузки: 4212