![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
AD |
![]()
Сообщение
#1
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Есть виджет, который расположен на другом виджете где-то несначала.
Как узнать его местоположение? geometry().x(), geometry().y(), frameGeometry().x(), frameGeometry().y() - все выдают нули. Но виджет располагается далеко не в начале. Как узнать его положение? Вот прилагаю рисунок. Обведенный виджет - это тот, чье расположение хочется узнать![attachment=463:geometry.JPG] |
|
|
Litkevich Yuriy |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
geometry().x() а к какому объекту ты их применяешь? Размеры-то надо относительно чего-то узнавать, например другого виджетая думаю тебе надо не геометрию объекта а позицию |
|
|
AD |
![]()
Сообщение
#3
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
а к какому объекту ты их применяешь? Размеры-то надо относительно чего-то узнавать, например другого виджета я думаю тебе надо не геометрию объекта а позицию Относительно таб-вкладки узнать, а еще лучше относительно самого главного окна. pos().x(), pos().y() - тоже выдавали не те значения. Если не ошибаюсь, и их пробовал! |
|
|
SABROG |
![]()
Сообщение
#4
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
Раз ничего не работает, можешь приаттачить минимальный пример, который можно собрать?
|
|
|
AD |
![]()
Сообщение
#5
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#6
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
AD |
![]()
Сообщение
#7
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Сорри, вчера не смог - надо было заняться аспирантурой (по философии контрольная). Сегодня вечером постараюсь выложить. Вопрос актуален еще!
|
|
|
AD |
![]()
Сообщение
#8
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Вот минимальный размер. Мне необходимо узнать координаты chartView!
Заранее благодарен за помощь. Сообщение отредактировал AD - 4.3.2009, 11:19 |
|
|
SABROG |
![]()
Сообщение
#9
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
А тебе координаты какие нужны? Глобальные или относительно какого-то виджета, клиентской области основного окна например?
Нехорошо слова из песни выкидывать:
Сообщение отредактировал SABROG - 3.3.2009, 22:53 |
|
|
AD |
![]()
Сообщение
#10
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
А тебе координаты какие нужны? Глобальные или относительно какого-то виджета, клиентской области основного окна например? Нехорошо слова из песни выкидывать:
Относительно вкладки, скорее всего. Сложно сказать. Хочу, чтобы был в указанном месте! ![]() Сообщение отредактировал AD - 4.3.2009, 11:19 |
|
|
SABROG |
![]()
Сообщение
#11
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
А куда еще 3 хедера потерял?
Что-то минимальный пример нифига на минимальный не похож ![]() Сообщение отредактировал SABROG - 3.3.2009, 23:03 |
|
|
AD |
![]()
Сообщение
#12
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
А куда еще 3 хедера потерял?
Sorry Минимальный, минимальный. Единственное - сгенерированные uic файлы оставил те же и файлы, сделанные дизайнером, те же кинул! ![]() Сообщение отредактировал AD - 4.3.2009, 11:20 |
|
|
SABROG |
![]()
Сообщение
#13
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
Кинуть то кинул, но не все. Может сначала сам попытаешься свой конструктор собрать
![]()
|
|
|
AD |
![]()
Сообщение
#14
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Кинуть то кинул, но не все. Может сначала сам попытаешься свой конструктор собрать ![]()
откуда ты его взял? я ведь выкинул ненужные файлы!!! |
|
|
kwisp |
![]()
Сообщение
#15
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
SABROG |
![]()
Сообщение
#16
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
Удали не нужные аттачи и выложи комулятивную версию, а то ведь я со своей стороны только добавлять файлы могу, они как бы синхронно не удаляются вместе с твоим удалением
![]() |
|
|
AD |
![]()
Сообщение
#17
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Все собирается. Проверил!
|
|
|
SABROG |
![]()
Сообщение
#18
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
AD |
![]()
Сообщение
#19
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Выкладываю!
|
|
|
SABROG |
![]()
Сообщение
#20
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
AD |
![]()
Сообщение
#21
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Выкладываю!
|
|
|
SABROG |
![]()
Сообщение
#22
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
AD |
![]()
Сообщение
#23
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
kwisp |
![]()
Сообщение
#24
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
AD,
у тебя указаны нулевые факторы растяжения..
это Fixed а у тебя Expanding могут ли GrowFlag | ShrinkFlag | ExpandFlag давать 0 ?? думаю нет. как то странно. еще интересно ширина lineEdit`a <width>16777215</width> Сообщение отредактировал kwisp - 3.3.2009, 23:49 |
|
|
AD |
![]()
Сообщение
#25
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
AD, у тебя указаны нулевые факторы растяжения..
это Fixed а у тебя Expanding могут ли GrowFlag | ShrinkFlag | ExpandFlag давать 0 ?? думаю нет. как то странно. еще интересно ширина lineEdit`a <width>16777215</width> Я не понял где и что конкретно? Где именно expanding, а не fixed? Какой именно lineEdit? ![]() Сообщение отредактировал AD - 4.3.2009, 0:05 |
|
|
kwisp |
![]()
Сообщение
#26
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
AD,
в TabMarineView.ui |
|
|
SABROG |
![]()
Сообщение
#27
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
Короче не правильно это - получать координаты для окон, которые еще небыли показаны. Фишка в том, что layout'ы срабатывают только когда окна показываться. Легко убедиться, если записать локальные координаты виджета в дизайнере, а потом в деструкторе главного окна прописать:
То они совпадут, либо будут близкие к ним. Еще один тест, если это прописать в слоте для какой-нибудь кнопки, то курсор мышки встанет на левый верхний угол нужного окна.
|
|
|
AD |
![]()
Сообщение
#28
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Спасибо, попробую. Т.е. эти размеры надо передавать через таймер? Или в paintEvent(), или в showEvent()?
|
|
|
SABROG |
![]()
Сообщение
#29
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
Скорее в paintEvent. Но что-то мне подсказывает, что изначально решение какой-то проблемы выбрано не правильно.
|
|
|
AD |
![]()
Сообщение
#30
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
SABROG |
![]()
Сообщение
#31
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
AD |
![]()
Сообщение
#32
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Пока не знаю, ты ведь не озвучил зачем тебе нужно узнавать позицию окна. Смысл такой: я хочу переопределить этот виджет, для того, чтобы поместить туда картинку карты, ну соответственно и возможность работы с ней: масштабирование, перемещение по карте, выделение определенной области и т.п. |
|
|
kwisp |
![]()
Сообщение
#33
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Смысл такой: я хочу переопределить этот виджет, для того, чтобы поместить туда картинку карты, ну соответственно и возможность работы с ней: масштабирование, перемещение по карте, выделение определенной области и т.п. AD, а зачем тебе позиция для "переопределения" и что понимается под "переопределением"??? |
|
|
AD |
![]()
Сообщение
#34
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
AD, а зачем тебе позиция для "переопределения" и что понимается под "переопределением"??? переопределение:
Ну вот так например! А точное местоположение нужно, для того, чтобы картинка попала ровно в этот виджет. Вот в эти функции подставлять буду
Сообщение отредактировал AD - 4.3.2009, 13:06 |
|
|
SABROG |
![]()
Сообщение
#35
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
А зачем SaharaInit координаты виджета?
|
|
|
AD |
![]()
Сообщение
#36
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Цитата(SABROG) А зачем SaharaInit координаты виджета? Тем самым определяются, куда эту карту рисовать. Что неясного-то? ![]() |
|
|
Litkevich Yuriy |
![]()
Сообщение
#37
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
AD |
![]()
Сообщение
#38
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Вот некоторая реализация отрисовки карты:
Sahara
Вот именно этой функцией и происходит само рисование: void SubSahara::Draw(HDC hdc) Цитата(Litkevich Yuriy) дак ты ее не клади как в WinAPI по координатам, если она картинка - устанвливай ее в объект QLable, а его суй в компоновщик нужного виджета. Я привел кусок кода, который выполняет отрисовку. Подскажи, пожалуйста, как изменить функции таким образом, чтобы можно было избавиться от этого WINAPI-кода. Тогда в моем другом проекте (TLV, результаты которого я приводил) я избавлюсь от кода, зависящего от Widows! Сообщение отредактировал AD - 4.3.2009, 13:53 |
|
|
Litkevich Yuriy |
![]()
Сообщение
#39
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
AD |
![]()
Сообщение
#40
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Ну и ну....
Есть картинка - BITMAP. Необходимо засунуть в переопределенном QWidget. указанная функция Draw вызывается в paintEvent() переопределенного виджета. указанные координаты для заполнения SPOINT spSize; SPOINT begSize! Эти координаты используются в Draw вот здесь:
Чем и что можно заменить, если хочется переделать в более универсальный код? |
|
|
kwisp |
![]()
Сообщение
#41
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
AD |
![]()
Сообщение
#42
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Цитата(kwisp) AD, я точно чего то не понимаю. почему её просто не нарисовать в paintEvent`e необходимого виджета??? Я тоже! Как? |
|
|
SABROG |
![]()
Сообщение
#43
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
AD |
![]()
Сообщение
#44
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Цитата(SABROG) QPixmap/QImage спокойно отрисовывается через QPainter. Чувствую себя полным идиотом. Подскажите, пожалуйста, как узнать точные координаты виджета. В жизни не поверю, что это невозможно.... А на счет QImage я могу понять, что можно. Но как переделать код, который относится к Сахаре. В частности, в fillBitmapInfo, Draw??? |
|
|
kwisp |
![]()
Сообщение
#45
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#46
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Необходимо засунуть в переопределенном QWidget. можно сделать наподобие этого:
Но в первом посте был здоровый виджет и я бы его поменял на QLable в котрый очень просто засовывать рисунки. |
|
|
AD |
![]()
Сообщение
#47
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Нет никакого файла картиночного! Есть файл карты (формат не могу сказать, ток намекну - DCW!!!!!!). BITMAP формируется в функциях fillBitmapInfo, Draw!
На счет того, что подсказали, но при этом усомнились, что вообще этот метод верен! ![]() Юра, спасибо. Все попробую чуть вечером! |
|
|
kwisp |
![]()
Сообщение
#48
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Нет никакого файла картиночного! Есть файл карты (формат не могу сказать, ток намекну - DCW!!!!!!). BITMAP формируется в функциях fillBitmapInfo, Draw! а сформировать картинку можешь с помощью illBitmapInfo, Draw в буфер или файл??? если да то потом показать её этим методом. либо а самому формировать картинку не вариант??? DCW to png к примеру? |
|
|
Litkevich Yuriy |
![]()
Сообщение
#49
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
AD, основная идея такая: у своего наследника QWidget сделай метод установки битмапа.
А извне вызывай этот метод. Это проще и реализовать и потом модифицировать, чем пытатся насильно впихнуть виджету его содержимое. |
|
|
SABROG |
![]()
Сообщение
#50
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
Нет никакого файла картиночного! Есть файл карты (формат не могу сказать, ток намекну - DCW!!!!!!). BITMAP формируется в функциях fillBitmapInfo, Draw! На счет того, что подсказали, но при этом усомнились, что вообще этот метод верен! ![]() Юра, спасибо. Все попробую чуть вечером! А парсера ARC/INFO формата нету? |
|
|
AD |
![]()
Сообщение
#51
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
AD |
![]()
Сообщение
#52
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Так уже у меня что-то получается. Выбрал QImage.
Теперь бы узнать, как правильно этот QImage заполнить и проблем не будет. Т.е. надо найти замену функции FillBitmapInfo():
Пока что сделал так (но это ничего не дало):
|
|
|
SABROG |
![]()
Сообщение
#53
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
FillBitmapInfo не нужен вообще имхо, это структура которая передается в SetDIBitsToDevice.
|
|
|
AD |
![]()
Сообщение
#54
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Цитата FillBitmapInfo не нужен вообще имхо, это структура которая передается в SetDIBitsToDevice. вах! А я и не додумался! ![]() Это все ясно! Дело в том, что именно благодаря коду в указанной функции происходит отрисовка карты. Каким образом заполнить QImage так, чтобы эффект был тот же? |
|
|
SABROG |
![]()
Сообщение
#55
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
Цитата FillBitmapInfo не нужен вообще имхо, это структура которая передается в SetDIBitsToDevice. вах! А я и не додумался! ![]() Это все ясно! Дело в том, что именно благодаря коду в указанной функции происходит отрисовка карты. Каким образом заполнить QImage так, чтобы эффект был тот же? Если код сахары брал картинку и рисовал на некоторую область и только, то просто тупо можно передать картинку в QLabel. Если помимо картинки надо на нее что-то рисовать или проводить трансформацию, или отображать только какую-то её часть, то QPainter + QImage, которому передается картинка и больше ничего не надо. |
|
|
AD |
![]()
Сообщение
#56
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Оказывается необходимо использовать функцию setPixel(). В качестве аргументов она имеет позицию картинки. Каким образом я могу разделить заполнение пикселей и саму отрисовку. В BITMAPINFO это и было сделано. А как это в QImage?
|
|
|
kwisp |
![]()
Сообщение
#57
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
SABROG |
![]()
Сообщение
#58
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
Оказывается необходимо использовать функцию setPixel(). В качестве аргументов она имеет позицию картинки. Каким образом я могу разделить заполнение пикселей и саму отрисовку. В BITMAPINFO это и было сделано. А как это в QImage? Вот я в блоге недавно такое делал. http://vingrad.ru/blogs/sabrog/2009/01/27/...aya-animatsiya/ Т.е. рисую на картинку все что нужно, а потом эту картинку отрисовываю. Правда я рисовал QPainter'ом, но никто не запрещает через QImage::setPixel(x,y) |
|
|
AD |
![]()
Сообщение
#59
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Извините, что достал вопросами, но просто необходимо сделать хороший вариант без зависимости от местоположения виджета. Подсказали следующий вариант:
Но есть проблема. Как видно из данного кода i = width * height. НО должно быть i < pDisplay -> PaletteSize(), поэтому в программе происходит сбой. Если я добавляю след. строки, то выходит не карта, а фигня:
|
|
|
SABROG |
![]()
Сообщение
#60
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
Я например не пойму что этот код делает вообще, для меня это перестановка цифр и какие-то операции над ними. Все-равно что дать человеку формулу круга и не сказать, что с помощью неё его можно нарисовать.
|
|
|
AD |
![]()
Сообщение
#61
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Этот код делает то же что и предыдущий код, который был в функции void FillBitmapInfo(). Он заполняет QImage* bitmap (а в предыдущем варианте заполнял BITMAPINFO* pBmi)!
|
|
|
SABROG |
![]()
Сообщение
#62
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
Генерит рельеф местности на основе карты высот (height)?
|
|
|
AD |
![]()
Сообщение
#63
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Генерит рельеф местности на основе карты высот (height)? НУ это если я делаю DEM-карту - то да. Именно такой метод и используется. Эврика! ![]() Удалось. Вот правильный код для отрисовки:
То есть получается, что за прозрачность отвечает 4-й бит, а раскраска - BGR! ![]() Всем, кто здесь и на prog.org помог - спасибо!!!! |
|
|
Гость_BRE_* |
![]()
Сообщение
#64
|
Гости ![]() |
То есть получается, что за прозрачность отвечает 4-й бит, а раскраска - BGR! ![]() Всем, кто здесь и на prog.org помог - спасибо!!!! Уточню и здесь. Точнее ARGB (как и было задано при создании QImage). DWORD: 0xAARRGGBB в памяти сохраняется как BB GG RR AA (увеличение адресов --->). |
|
|
kwisp |
![]()
Сообщение
#65
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
мои поздравления. теперь не зависишь от всяких там HDC??? так ведь?
|
|
|
AD |
![]()
Сообщение
#66
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
мои поздравления. теперь не зависишь от всяких там HDC??? так ведь? Cпасибо. Именно так! ![]() Цитата(BRE) Уточню и здесь. Точнее ARGB (как и было задано при создании QImage). DWORD: 0xAARRGGBB в памяти сохраняется как BB GG RR AA (увеличение адресов --->). BRE, регистрируйтесь на этом форуме! Здесь нужны такие толковые люди! ![]() ![]() ![]() |
|
|
Litkevich Yuriy |
![]()
Сообщение
#67
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Гость_BRE_* |
![]()
Сообщение
#68
|
Гости ![]() |
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 9.6.2025, 19:14 |