Здравствуйте, гость ( Вход | Регистрация )
Litkevich Yuriy | Дата 27.12.2009, 1:45 | |
Подумать конечно можно, если смещать ровно на отступ. Но пока не знаю, стоит ли так делать. | ||
Kagami | Дата 26.12.2009, 23:49 | |
У меня вроде нормально. По сравнению с перыми вариантом я только добавил смещение для вывода. Минимальный размер оставил равным boundingRect() | ||
Litkevich Yuriy | Дата 26.12.2009, 23:20 | |
Кстати, а почему бы тебе не выводить рисунок со смещением? а потому-что другой рисунок обрежется, проверь на painter2.log |
||
Kagami | Дата 26.12.2009, 23:16 | |
Кстати, а почему бы тебе не выводить рисунок со смещением? Цитата int top = pic->boundingRect().y(); int left = pic->boundingRect().x(); painter.drawPicture(QPoint(-left, -top), *pic); |
||
Litkevich Yuriy | Дата 26.12.2009, 23:04 | |
Надо посмотреть как они его считают я его чуть ли не наизусть выучилВ файле, куда сохранен QPicture, зашит левый верхний угол ограничивающего прямоугольника блин, как-то я то из виду упустил, что у прямоугольника начальная координата может быть не нулевой.Kagami, спасибо большое!, почти сутки Нынешний фрагмент кода от моего первоначального исходника:
Вот как теперь: |
||
Kagami | Дата 26.12.2009, 21:30 | |
Чуть-чуть покопался в исходниках QPicture. Заметил что boundRect зашивается в файл при сохранении. Надо посмотреть как они его считают, может какая идея и придет. UPD. Все оказалось гораздо проще. В файле, куда сохранен QPicture, зашит левый верхний угол ограничивающего прямоугольника и его высота и ширина. Как их считать написано в /opt/qtsdk-2009.05/qt/src/gui/image/qpicture.cpp, смотри функцию QPicturePrivate::checkFormat() UPD2. Совсем забыл - ответ на твой первоначальный вопрос: Цитата int top = pic->boundingRect().y(); int left = pic->boundingRect().x(); |
||
Litkevich Yuriy | Дата 26.12.2009, 20:03 | |
они рисовались с точки (0, 0 рисовались так:
Это переделанный пример из книги Шлее. как я понимаю, координаты именно (0, 0) |
||
Kagami | Дата 26.12.2009, 19:26 | |
Юр, что бы до конца прояснить ситуацию, при создании этих рисунков, они рисовались с точки (0, 0) или со смещением, которое ты и хочешь выяснить? | ||
Litkevich Yuriy | Дата 26.12.2009, 15:01 | |
Меня не интерисует виджет window. При изменении размеров окна я вижу ту куртинку, какую создавал (сохранил в файле). Я умышленно покрасил фон виджета PictureViewer, чтобы видеть его размеры. Как определить отступ сверху и слева от края виджета, до рисунка. речь идёт о PictureViewer, на котором я рисую. под рисунком я понимаю QPicture, который рисуется рисовальщиком (QPainter).Я рисую по координатам (0, 0): , чтобы воспроизвести рисунок, так, как он был в оригинале.При рисовании компоновщики не играют ни какой роли, равно как и наличие родительского виджета. PictureViewer может быть единственным виджетом (окном верхнего уровня) Вот этот размер меня интерисует: |
||
Kagami | Дата 26.12.2009, 14:00 | |
Ты про компоновку забываешь - window -> mainLayout -> viewer. А ведь у нее свои поля есть. Поэтому нулевая точка рисовальщика на viewer'е будет смещена относительно (0,0) виджета window. | ||
Просмотр темы полностью (откроется в новом окне) | ||
Текстовая версия | Сейчас: 29.3.2024, 8:48 |