Категории |
|
C++,C#,C
[19]
Уроки по средам разработки приложений с использованием C,C++,C#, а также .Net, DirectX, OpenGL и других
|
Delphi
[14]
Уроки работы в среде программирования Delphi
|
Basic
[13]
Уроки разработки приложений в среде Basic
|
DirectX
[8]
Уроки по работе с DirectX, включая Direct3D и другие инструменты
|
Web
[7]
Уроки по "Веб-программированию"
|
JavaScript
[12]
Уроки по кодингу в Java и JavaScript
|
XNA
[9]
Статьи и уроки программирование в среде XNA C++&C#
|
| |
|
|
| | |
|
Вращение текста
Как-то раз мне понадобилась функция, которая могла бы вращать текст внутри прямоугольника. Проблема состоит в том, что 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);
Источник: http://www.cyberguru.ru/cpp-sources/ui/prostoe-vraschenie-teksta.html |
Категория: C++,C#,C | Добавил: gforcer (16.11.2009)
| Автор: Админ
|
Просмотров: 1127 | Комментарии: 1
| Рейтинг: 1.0/1 |
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]
| |
| | |
|
|