|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.10.2008, 15:11 | #1 |
Форумчанин
Регистрация: 21.07.2008
Сообщений: 192
|
SetWorldTransform
Помогите разобратся с SetWorldTransform
Мне нужно при каждом нажатии на кнопку поворачивать изображение , загруженное в Image на 90 градусов ( и Image тоже должен менять размер я так понимаю ) Пытаюсь делать так : Загружаю изоброжение так: if OpenPictureDialog1.Execute then begin Image1.Picture.LoadFromFile(OpenPic tureDialog1.FileName); source.Assign(Image1.Picture); end; Пытаюсь поворачивать; procedure TForm1.BitBtn1Click(Sender: TObject); var Matrix: TXForm; Angle: Single; begin Angle:=90; Matrix.eM11 := Cos(Angle); Matrix.eM12 := Sin(Angle); Matrix.eM21 := -Sin(Angle); Matrix.eM22 := Cos(Angle); Matrix.eDx := 0; Matrix.eDy := 0; SetWorldTransform(source.Handle, Matrix); Image1.Canvas.Draw(0, 0, source); ModifyWorldTransform(source.Handle, Matrix, MWT_IDENTITY); end; Я понимаю что при попытке переворачивать - где то бред написал. Потому что при нажати на кнопку не чего не происходит. Но я не нашёл не где норм описания SetWorldTransform , а с примерами те что нашёл тоже толком не смог разобратся. Можете подсказать где ошибка ??? Или лучше привести рабочий пример с SetWorldTransform , чтоб я смог раздуплится как SetWorldTransform работает. Зарание спасибо Последний раз редактировалось lexaltd; 18.10.2008 в 16:25. |
18.10.2008, 16:04 | #2 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Может, лучше так?
Поворот изображения на N градусов Поворот проще всего осуществляется в полярных кординатах, а у нас доступны только Декартовы. Перевод осуществляется по формулам: x=LCos(@) L=Sqrt(x**2+y**2) y=LSin(@) @=arctg(y/x) Для поворота достаточно добавить к a угол, на который осуществляется поворот. И новые координаты будут выглядеть так: x'=LCos(@+t) y'=LSin(@+t) В принципе это все. Давайте теперь напишем функцию, которая будет переводить координаты из старых в новые. Код:
Последний раз редактировалось Вадим Мошев; 09.10.2017 в 00:41. |
18.10.2008, 16:24 | #3 |
Форумчанин
Регистрация: 21.07.2008
Сообщений: 192
|
Спасибо mihali4 за ответ (если не получется с SetWorldTransform то будем пробывать так )
Но хотелось разобратся SetWorldTransform |
18.10.2008, 16:48 | #4 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
еще пример:
Код:
|
18.10.2008, 18:45 | #5 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
To alexBlack
Хороший пример, как раз то, что просил автор. Я бы только чуток переделал начало: Код:
Код:
Последний раз редактировалось mihali4; 18.10.2008 в 18:47. |
18.10.2008, 22:16 | #6 |
Форумчанин
Регистрация: 21.07.2008
Сообщений: 192
|
Спасибо большое - это то что доктор прописал
|
25.05.2009, 23:38 | #7 | |
работа не волк....
Форумчанин
Регистрация: 09.06.2008
Сообщений: 337
|
Простите, что поднимаю старую тему. Но возник вопрос.
Цитата:
Цель, для которой требуются неправые средства, не есть неправая цель.
|
|
10.06.2009, 17:25 | #8 |
Пользователь
Регистрация: 10.03.2007
Сообщений: 51
|
Понимаю, что тема относительно старая, но мне ОЧЕНЬ помог описанный здесь пример. Большое спасибо автору и тому кто этот код здесь написал(может, это и один человек)
|