Форум Фотогалерея Деловой мир Мелитополя
Мелитополь
Мелитопольский форум
 
 RSS  FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

поворот текста

 
Начать новую тему   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Мелитополь -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Гость










СообщениеДобавлено: Пн Фев 20, 2006 13:16 pm    Заголовок сообщения: поворот текста Ответить с цитатой

собсно сабж... но проблема такая, при повороте текст (его вывожу как рисунок) очень искажается, например при угле Pi/4 терпимо, а при Pi/6 ужасно, при Pi/2 вообще отлично, ничего не искажается.. я думаю что весь парафин в формуле вычисления.....
ну код для наглядности

Код:

// код можно прицепить на батон :)
CClientDC dc(this); // контекст для рисования
double pi=3.14; // ну это понятно
CSize size; // размер выводимого текста в пикселях
int loop,loop1,x0,y0,x,y; // цп, и координаты центра поворота и новые
x0=50,y0=100; // центр
double ang; ang=pi/6; // угол поворота
COLORREF c; // цвет пикселя
size=dc.GetTextExtent("TEST"); // беру размеры текста
dc.TextOut(x0,y0,"TEST");y0+=size.cy; //вывожу в контекcт
for (loop=x0;loop<x0+size.cx;loop++) // поехали
{
// изображение прохожу снизу вверх... т.е от центра поворота
   for (loop1=y0;loop1>y0-size.cy;loop1--)
   {
      c=dc.GetPixel(loop,loop1); // получаю цвет пикселя
      x = (int)(x0+(loop-x0)*cos(ang)+(loop1-y0)*sin(ang)); // вычисляю новые координаты
      y = (int)(y0-(loop-x0)*sin(ang)+(loop1-y0)*cos(ang)); // тоже самое
      dc.SetPixel(x+100,y+100,c); // вывожу пиксель с новыми координатами смещенные на 100,100
   }
}

ну или может есть какие другие формулы поворота точки?!
Вернуться к началу
VX

Горожанин


Пол: Пол: Оно
Зарегистрирован: 03.10.2005
Сообщения: 139

Репутация: 12.1
голосов: 1

СообщениеДобавлено: Пн Фев 20, 2006 22:13 pm    Заголовок сообщения: Ответить с цитатой

Вобще-то формула поворота такая у тя не верная вот правильно
в лево

x'=x*cos(a)+y*sin(a)
y'=y*cos(a)-x*sin(а)

и в право

x'=x*cos(a)-y*sin(a)
y'=x*sin(а)+y*cos(a)

дерзай...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение [ скрыт ]
Гость










СообщениеДобавлено: Вт Фев 21, 2006 18:42 pm    Заголовок сообщения: Ответить с цитатой

хм.. если мои формулы не правильны, почему твои вообще не работают?..
мои формулы поворачивают.. но с искажением....
как мне добится что бы текст поворачивался более красиво?
Вернуться к началу
VX

Горожанин


Пол: Пол: Оно
Зарегистрирован: 03.10.2005
Сообщения: 139

Репутация: 12.1
голосов: 1

СообщениеДобавлено: Вт Фев 21, 2006 20:21 pm    Заголовок сообщения: Ответить с цитатой

Формулы верные, у тебя наложение пикселей происходит.
Используй буфер.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение [ скрыт ]
Показать сообщения:   
Начать новую тему   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Мелитополь -> Программирование Часовой пояс: GMT + 2
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB

Р: 537410

База отдыха «Белый парус» пгт Кирилловка Азовское море.

Рейтинг Мелитопольских сайтов на Melitopol.org Hosting by VivaNET