CMyLabel - анимация текста

Все исходники / Язык программирования C++ / OS Windows / Desktop / Исходники приложений / CMyLabel - анимация текста
Оглавление:
  1. База построения С++, MFC, GDI
  2. Эффект - вращение надписи
  3. Эффект - смена текста в виртуальной глубине окна
  4. Эффект - смывание и восстановление надписи
  5. Эффект - скатывание и раскатывание надписи
  6. CMyLabel - класс графических эффектов смены текста

База построения С++, MFC, GDI

Работа класса С++ CMyLabel Создавая какое-либо приложение иногда требуется разместить прозрачную надпись в окне над красивой картинкой или просто на цветном фоне. Текстовая метка CMyLabel построена на базе MFC (Microsoft Foundation Classes), для графических эффектов применена библиотека GDI. Замена текста данной метки будет происходить с различными анимационными эффектами. Текстовая надпись класса CMyLabel украсит любое окно приложения Windows.

Эффект - вращение надписи

Анимация первая - вращение надписи, основан на обмане зрения. Плавно уменьшаем ширину шрифта до минимальной, изменяем текст, затем плавно восстанавливаем ширину шрифта. На самом деле вращение не происходит, но наше воображение волей-неволей представляет эти изменения как вращение. На этом эффекте основано и вращение карт в карточных играх, без использования библиотек DirectX или OpenGL (хотя в принципе и DirectX и OpenGL используют похожий эффект, так как мониторы пока еще не объемные).

Эффект - смена текста в виртуальной глубине окна

Анимация вторая - перемещение текста вдаль и возврат обратно. Плавно уменьшаем размер шрифта до 1, изменяем текст, плавно восстанавливаем размер шрифта. Опять же наше воображение воспринимает это гораздо красивее. Наши глаза видят, что текст улетает вдаль и прилетает "оттуда" уже другой текст.

Эффект - смывание и восстановление надписи

Анимация третья - смывание надписи и восстановление ее. Здесь эффект достигается немного сложнее. Одним из способов создания этого анимационного эффекта - использование контуров.  BeginPath() --**-- EndPath().

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 - анимация текста » Язык программирования С++ cmylabel_vs7.zip Размер:178 КбайтЗагрузки:4529