Вращение текста

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Penumbra
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 24.01.2009 (Сб) 13:36

Вращение текста

Сообщение Penumbra » 31.08.2011 (Ср) 2:59

на часах 3 ночи, что-то я тормозить стал..

поворачиваю текст на угол aAngle
Код: Выделить всё
Private Sub TextOutAngle(dc As Long, Fontname As String, x As Long, y As Long, aAngle, aSize As Long, txt As String)
Dim hFont, Fontold As Long
   If Len(txt) = 0 Then Exit Sub
   Call SetBkMode(dc, TRANSPARENT)
   hFont = CreateFont(-aSize, 0, aAngle * 10, 0, FW_NORMAL, 0, 0, 0, 1, 4, &H10, 2, 4, Fontname)
   Fontold = SelectObject(dc, hFont)
   Call TextOut(dc, x, y, (txt), Len(txt))
   Call SelectObject(dc, Fontold)
   Call Delet
все вроде пучком, но текст поворачивается вокруг верхней левой точки (координата х+высота шрифта)
вот чтото не могу разобраться как вращать с точкой по центру текста – простая математика вроде..
:oops:

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Вращение текста

Сообщение Mikle » 31.08.2011 (Ср) 15:05

Берёшь вектор от верхнего левого угла с центру.
Рассчитываешь поворот этого вектора на нужный угол.
Вычитаешь из исходного вектора полученный.
Смещаешь текст после поворота на полученную величину.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот, Yandex-бот и гости: 69

    TopList