![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
Unconnected |
![]()
Сообщение
#1
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Привет
![]() Вопрос, как можно повернуть TImage на определённый угол? Сразу говорю, не картинку в TImage, а сам TImage(вместе с картинкой)). Вообще, возможно такое? Я находил код для поворота битмапа, но сам TImage не поворачивался, а освободившиеся области заливались заданным цветом. -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
SetGraphicsMode Function + SetWorldTransform Function дают аналогичный результат. Можно попробовать установить для канвы TImage желаемую матрицу поворота, и потом перерисовать изображение, находящееся в TImage. по идее оно должно повернуться на заданный матрицей угол.
Хотя для невизуального компонента, каким является TImage - какая бы разница, крутить его самого или изображение, которое в нем находится? Цитата Я находил код для поворота битмапа, но сам TImage не поворачивался, Как ты собственно определил, поворачивался ли у тебя TImage или нет? |
Unconnected |
![]()
Сообщение
#3
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Цитата Хотя для невизуального компонента, каким является TImage - какая бы разница, крутить его самого или изображение, которое в нем находится? Может, и невизуальный, но ведь можно для него установить Width и Height? В моём понимании TImage все таки имеет форму прямоугольной рамки. Когда пробовал поворачивать битмап, получалось такое: Вот по чёрным областям я и определил.. Да и например когда с ToolPallete кидаю на форму TImage, то он прямоугольный, и повернуть нельзя. Мне это нужно для того, чтобы можно было "крутить" имаджи и совмещать их, сделать что-то типа механизма "прилипания". -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Говорю сразу: крутить компонент нельзя (это чтоб потом не говорил, что много времени потратил, а ничего не получается), можно крутить только содержимое этого компонента.
Цитата Вот по чёрным областям я и определил.. Если ты нашел неправильный код вращения битмапа - это не значит, что правильного не существует.Эскизы прикрепленных изображений ![]() |
Unconnected |
![]()
Сообщение
#5
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Я находил и правильный, компонент - там получалось так же, как на твоём скрине - но у меня с ним были проблемы небольшие. Но раз компонент крутить нельзя, то как можно сделать "прилипание", т.е. как для картинки узнавать границу соседней картинки, и чтобы она была параллельна границе этой картинки? Может, получать цвет точек и ориентироваться по нему?
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата Я находил и правильный, компонент - там получалось так же Я не использую сторонние компоненты. Это одна-единственная процедура. Грести сотни недочетов/багов/недоделок из-за того, что какой-то компонентописатель быстро слабал свое поделие и выбросил его в сеть - мне не очень хочется. Быстрее будет обработать то, что надо, процедурой, и отрисовать заново стандартным компонентом, но потом не думать, что в самый ответственный момент что-нибудь перекосится, где-нибудь зальет не тем цветом, или вообще из-за другой версии Windows вылетит с ошибкой.Цитата Может, получать цвет точек и ориентироваться по нему? Может быть. Не зная, что именно тебе надо, по тем отрывочным сведениям, которые те даешь - я ничего не могу советовать. |
Unconnected |
![]()
Сообщение
#7
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Цитата Это одна-единственная процедура Я второй раз тоже пробовал процедурой, вот этой. Цитата Не зная, что именно тебе надо, по тем отрывочным сведениям, которые те даешь - я ничего не могу советовать. Ну, на форме есть имаджи, их можно таскать мышкой. Нужно, чтобы можно было их поворачивать и комбинировать, например так: Углы поворота имаджей будут равны, или примерно равны.. -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
В таком случае - это совсем не простая задача. Еще и потому, что:
![]() Понимаешь, в чем дело, да? ![]() http://www.delphisources.ru/pages/faq/base..._any_shape.html , возможно оно тебя натолкнет еще на какую идею. Меня сразу вот так ни на что, кроме "повернуть изображение как надо, запаковать его в регион - в смысле, отрезать все лишние углы - и работать именно с полученным регионом" не хватило. Подумаю еще, может что и придумается. Единственная проблема - я не помню, чтоб была готовая функция проверки, пересекаются ли 2 региона. А хранить для такого региона еще и его границы в каком-либо виде (и потом проверять, а не совпадает ли какая граница одной области с границей другой) - с ума сойдешь это все обрабатывать... Также надо посмотреть в сторону GDI+, там много чего есть для работы с графикой, может и для твоей задачи чего найдется. Про OpenGL пока даже думать не хочется... Хотя... Откуда задачка-то? Игру какую-то пишешь? Что-то типа Puzzle? |
Unconnected |
![]()
Сообщение
#9
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Цитата Понимаешь, в чем дело, да? Да, действительно. У меня тоже была мысль хранить координаты границ всех имаджей, но это кажется действительно ресурсоёмко будет, при малейшем перемещении всё пересчитывать и проверять. Копаться с регионами (и тем более с OpenGl) неохота, т.к. не критично сделать проще. Думаю, достаточно будет поворотов на 90о.. (это я уже знаю, как делать) Цитата Откуда задачка-то? Нет, не игру, хотя отдалённо похоже) Это будет заготовка для программы, моделирующей дорожный трафик.. Сообщение отредактировано: Unconnected - 12.04.2010 20:36 -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
![]() ![]() |
![]() |
Текстовая версия | 20.06.2025 21:21 |