0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 22
|
|
1 | |
Отрисовка изображения поверх канвы (изображения) и вращение изображения18.07.2012, 10:13. Показов 5712. Ответов 16
Метки нет Все метки)
(
Здравствуйте.
Столкнулся с 2умя проблемами при работе с изображениями средствами C++ Builder. Хочу сделать одну интересную штуку, но пока не выходит. Надо загрузить на форму изображение (типа карту) и сделать, чтобы поверх карты летал самолётик. Первая часть трудностей не вызвала, разместил на форме Image и OpenDialog и дело в шляпе. А вот с самолётом начались трудности. 1) Самолёт загружаю из файла .bmp ; в .bmp сохранял из .png с прозрачным фоном. На экран (в виде Image2) всё равно выводится с белым фоном, который совершенно мне не нужен. 2) Хочу чтобы самолёт поворачивался, в процессе полёта. Для этого использовал метод вращения с использованием DIBs. Самый последний, описанный здесь. Оттуда кстати и загружаю его из файла и на последнем шаге копирую в Image. Всё хорошо вращается, но в добавок к белому фону, добавляется ещё черный, от вращения. Что можно с этим сделать? Знаю немного OpenGL. Если проще им, то подскажите что и как делать.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
18.07.2012, 10:13 | |
Ответы с готовыми решениями:
16
Вращение изображения Вращение изображения? Вращение изображения Загрузка изображения в Image с сохранении соотношения сторон изображения |
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 22
|
|
19.07.2012, 10:48 [ТС] | 2 |
Наверняка не такая уж и сложная задачка. Не уже ли никто не может помочь?
Если что-то не понятно, не стесняемся спрашиваем ))
0
|
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
|
|
19.07.2012, 11:43 | 3 |
(домой приду поподробнее напишу)
В image самолетика ставишь Transparent Color = clWhite; и TransparentColor = true;
1
|
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 22
|
|
23.07.2012, 10:52 [ТС] | 4 |
Какую-то ерунду вы сейчас написали. Таких свойств нет. Установил Transparent = true; Теперь черный фон пропадает через раз (Смотрите вложения). Т.е. 4 кадра с черным фоном, 1 без него и так далее...
0
|
23.07.2012, 11:20 | 5 |
Не используй TImage - для анимации не лучший вариант, много лишних скрытых действий.
Лучше каждый кадр рисовать на временном TBitmap, а уж его после этого рисовать на канву, скажем, формы. Порядок отрисовки кадра такой: сперва фон(карта), потом делаем SetWorldTransform() для канвы временного TBitmap, выставляя нужный поворот, и рисуем самолет в нужном месте.
0
|
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 22
|
|
23.07.2012, 12:40 [ТС] | 6 |
Ваш метод конечно хорош, но только полачется, что для отрисовки мне надо будет каждый раз заново подгружать карту, что не есть хорошо. Или вы имеете вв виду, что-то другое. Можно реальный пример использования?
------------------------------------------------------------------------------------ После некоторого колдовства с транспарентом DestBitmap->TransparentColor = clBlack; //* DestBitmap->Transparent = true; //* Стало так, как на картинке. Но как дальше продвинуться не имею понятия
0
|
24.07.2012, 21:32 | 7 | ||||||||||
Чего ради ее подгружать более одного раза? Просто не надо ее удалять из памяти.
![]() Вот, пример набросал - моя любимая сушка стережет родину, так сказать. ![]() Экзешник - Win32.rar. Код:
Не по теме: RotateDC - не моя функция, здесь выкладывал кто-то... просто она весьма удобна:)
1
|
2 / 2 / 0
Регистрация: 09.11.2011
Сообщений: 85
|
||||||
13.04.2013, 20:46 | 8 | |||||
Доброго времени суток. Почему при запуске виден только фон?
Поворачиваем изображение в z и рисуем , а его вообще не видно.
0
|
2 / 2 / 0
Регистрация: 09.11.2011
Сообщений: 85
|
|
14.04.2013, 20:36 | 10 |
BRcr,т.е. происходит как бы поворот системы координат этой канвы? Не подскажете тогда , как всё-таки осуществить поворот ?
0
|
15.04.2013, 12:35 | 14 | |||||
Пример же есть, просто повтори. Вот отдельно интересующий тебя кусок, раз так не видно:
1
|
2 / 2 / 0
Регистрация: 09.11.2011
Сообщений: 85
|
|
17.04.2013, 15:19 | 15 |
0
|
3 / 5 / 0
Регистрация: 09.12.2012
Сообщений: 97
|
|
27.10.2014, 15:24 | 16 |
А если Image1 (та, что снизу лежит) нельзя трогать - даже запомнить нельзя ... Как тогда на Image2 (сверху Image1) вывести линию черную, чтобы было под Image2 видно Image1?
0
|
27.10.2014, 19:47 | 17 |
Как минимум, подлежащее изображение должно обновляться при обновлении надлежащего. А это уже подразумевает доступ к нижнему изображению.
Gendalf147, зачем такие тернии? Обрисуй задачу, может, найдется решение посмекалистей....
0
|
27.10.2014, 19:47 | |
Помогаю со студенческими работами здесь
17
Изменение яркости контрастности изображения. Бинаризация изображения Вращение изображения, как сделать? Поворот (вращение) изображения формата bmp
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |