Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 августа!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь


<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/




ПРОГРАММИРОВАНИЕ НА C и С++



Давно заметил, что всё-таки языки С/C++ это не самый лучший вариант программирования под Windows. Сейчас появилась масса более современных и удобных языков, например тот же Python - кроссплатформенный язык, очень легок в изучение. Я его изучил буквально за несколько дней по этому курсу - ссылка. Автор постарался, там видеоуроки на удивление легкие и понятные.

Простое вращение текста.

Автор: Stefan Schwedt

Как-то раз мне понадобилась функция, которая могла бы вращать текст внутри прямоугольника. Проблема состоит в том, что Windows позволяет вращать текст вокруг левого нижнего угла указанного текста. Здесь приводится решение данной проблемы.

Совместимость: VC 4-6, Win95-98, NT4, W2K, MFC

Сперва создайте CFont с углом вращения, указанным в nEscapement. Укажите Вашему DC на этот фонт и вызовите следующую функцию:

#include <cmath>
 
 
 
 // pDC : указатель на контекст устройства
 
 // str : сам текст
 
 // rect: собственно квадрат
 
 // nOptions: может быть комбинацией ETO_CLIPPED и ETO_OPAQUE (см. функцию ExtTextOut)
 
 void DrawRotatedText(CDC* pDC, const CString str, CRect rect,
 
                      double angle, UINT nOptions = 0)
 
 {
 
    // преобразуем угол в радианы
 
    double pi = 3.141592654;
 
    double radian = pi * 2 / 360 * angle;
 
 
 
    // получаем центр невращаемого текста
 
    CSize TextSize = pDC->GetTextExtent(str);
 
    CPoint center;
 
    center.x = TextSize.cx / 2;
 
    center.y = TextSize.cy / 2;
 
 
 
    // теперь вычисляем центр вращаемого текста
 
    CPoint rcenter;
 
    rcenter.x = long(cos(radian) * center.x - sin(radian) * center.y);
 
    rcenter.y = long(sin(radian) * center.x + cos(radian) * center.y);
 
 
 
    // в заключении рисуем текст и перемещаем его в заданном квадрате
 
    pDC->SetTextAlign(TA_BASELINE);
 
    pDC->SetBkMode(TRANSPARENT);
 
    pDC->ExtTextOut(rect.left + rect.Width() / 2 - rcenter.x,
 
                    rect.top + rect.Height() / 2 + rcenter.y,
 
                    nOptions, rect, str, NULL);
 
 }

Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS