IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Поворот TImage на угол
сообщение
Сообщение #1


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Привет smile.gif

Вопрос, как можно повернуть TImage на определённый угол? Сразу говорю, не картинку в TImage, а сам TImage(вместе с картинкой)). Вообще, возможно такое? Я находил код для поворота битмапа, но сам TImage не поворачивался, а освободившиеся области заливались заданным цветом.


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






SetGraphicsMode Function + SetWorldTransform Function дают аналогичный результат. Можно попробовать установить для канвы TImage желаемую матрицу поворота, и потом перерисовать изображение, находящееся в TImage. по идее оно должно повернуться на заданный матрицей угол.

Хотя для невизуального компонента, каким является TImage - какая бы разница, крутить его самого или изображение, которое в нем находится?
Цитата
Я находил код для поворота битмапа, но сам TImage не поворачивался,
Как ты собственно определил, поворачивался ли у тебя TImage или нет?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Цитата
Хотя для невизуального компонента, каким является TImage - какая бы разница, крутить его самого или изображение, которое в нем находится?


Может, и невизуальный, но ведь можно для него установить Width и Height? В моём понимании TImage все таки имеет форму прямоугольной рамки. Когда пробовал поворачивать битмап, получалось такое:


Вот по чёрным областям я и определил.. Да и например когда с ToolPallete кидаю на форму TImage, то он прямоугольный, и повернуть нельзя.

Мне это нужно для того, чтобы можно было "крутить" имаджи и совмещать их, сделать что-то типа механизма "прилипания".


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Говорю сразу: крутить компонент нельзя (это чтоб потом не говорил, что много времени потратил, а ничего не получается), можно крутить только содержимое этого компонента.

Цитата
Вот по чёрным областям я и определил..
Если ты нашел неправильный код вращения битмапа - это не значит, что правильного не существует.



Эскизы прикрепленных изображений
Прикрепленное изображение
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Я находил и правильный, компонент - там получалось так же, как на твоём скрине - но у меня с ним были проблемы небольшие. Но раз компонент крутить нельзя, то как можно сделать "прилипание", т.е. как для картинки узнавать границу соседней картинки, и чтобы она была параллельна границе этой картинки? Может, получать цвет точек и ориентироваться по нему?


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата
Я находил и правильный, компонент - там получалось так же
Я не использую сторонние компоненты. Это одна-единственная процедура. Грести сотни недочетов/багов/недоделок из-за того, что какой-то компонентописатель быстро слабал свое поделие и выбросил его в сеть - мне не очень хочется. Быстрее будет обработать то, что надо, процедурой, и отрисовать заново стандартным компонентом, но потом не думать, что в самый ответственный момент что-нибудь перекосится, где-нибудь зальет не тем цветом, или вообще из-за другой версии Windows вылетит с ошибкой.

Цитата
Может, получать цвет точек и ориентироваться по нему?
Может быть. Не зная, что именно тебе надо, по тем отрывочным сведениям, которые те даешь - я ничего не могу советовать.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Цитата
Это одна-единственная процедура

Я второй раз тоже пробовал процедурой, вот этой.
Цитата

Не зная, что именно тебе надо, по тем отрывочным сведениям, которые те даешь - я ничего не могу советовать.


Ну, на форме есть имаджи, их можно таскать мышкой. Нужно, чтобы можно было их поворачивать и комбинировать, например так:


Углы поворота имаджей будут равны, или примерно равны..


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






В таком случае - это совсем не простая задача. Еще и потому, что:

Прикрепленное изображение
Понимаешь, в чем дело, да? smile.gif "Пустая" часть большого изображения наедет на границу малого изображения раньше, чем эти границы совпадут... Картинка будет искажена. Тут я бы смотрел в сторону чистого WinAPI и регионов (вот регионы-то могут быть любой формы). В крайнем случае - вот это глянь:
http://www.delphisources.ru/pages/faq/base..._any_shape.html
, возможно оно тебя натолкнет еще на какую идею. Меня сразу вот так ни на что, кроме "повернуть изображение как надо, запаковать его в регион - в смысле, отрезать все лишние углы - и работать именно с полученным регионом" не хватило. Подумаю еще, может что и придумается. Единственная проблема - я не помню, чтоб была готовая функция проверки, пересекаются ли 2 региона. А хранить для такого региона еще и его границы в каком-либо виде (и потом проверять, а не совпадает ли какая граница одной области с границей другой) - с ума сойдешь это все обрабатывать... Также надо посмотреть в сторону GDI+, там много чего есть для работы с графикой, может и для твоей задачи чего найдется. Про OpenGL пока даже думать не хочется... Хотя...

Откуда задачка-то? Игру какую-то пишешь? Что-то типа Puzzle?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Цитата
Понимаешь, в чем дело, да?


Да, действительно. У меня тоже была мысль хранить координаты границ всех имаджей, но это кажется действительно ресурсоёмко будет, при малейшем перемещении всё пересчитывать и проверять.
Копаться с регионами (и тем более с OpenGl) неохота, т.к. не критично сделать проще. Думаю, достаточно будет поворотов на 90о.. (это я уже знаю, как делать)
Цитата

Откуда задачка-то?


Нет, не игру, хотя отдалённо похоже) Это будет заготовка для программы, моделирующей дорожный трафик..

Сообщение отредактировано: Unconnected -


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 24.12.2024 1:33
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name