39 / 39 / 17
Регистрация: 14.10.2013
Сообщений: 174
|
|
1 | |
Qt, виртуальный скриншот виджета(?)24.06.2014, 16:39. Показов 2894. Ответов 12
Метки нет (Все метки)
Добрый день,
Возник следующий вопрос: можно ли виртуально в памяти(без вывода на экран), рассчитать как бы выглядел определенный виджет и получить этот скриншот? Более подробно: допустим есть виджет отображающий шкалу температур, нужно прикрепить скриншот этой шкалы к картинке с разрешением 1000х1000, а на экране в реальности он имеет размер 80x300, и соответственно при его растягивании до нужной высоты, будет потеря качества и иногда сильно. И если бы он на экране был изначально растянут до высоты 1000, я бы получил скриншот не требующий растяжений и потери качества. Можно ли без отображения на экране, проэмулировать вид виджета с нужным размером и взять эту картинку? Извините, не придумал дельного название темы, прошу переименовать если нужно.
0
|
24.06.2014, 16:39 | |
Ответы с готовыми решениями:
12
Как навести мышку на x,y внутри виджета относительно 0,0 виджета (левого верхнего угла виджета)? Как добраться до виджета, который находится внутри другого виджета? Вызов одного виджета из другого виджета Почему заголовок виджета показывается ниже чем текст виджета |
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
|
||||||
24.06.2014, 16:56 | 2 | |||||
Сообщение было отмечено Asting как решение
Решение
Можно попробовать вызывать render виджета задав setScale у QPainter.
То есть что-то типа:
В общем маловероятно.
1
|
39 / 39 / 17
Регистрация: 14.10.2013
Сообщений: 174
|
|
24.06.2014, 17:17 [ТС] | 3 |
Весьма неожиданно, оказалось тем что мне нужно! Похоже этот метод обрабатывает область рендера изначально как векторное изображение и в конце загоняет в растр..., текст не размывается, что меня больше всего интересовало.
Добавлено через 8 минут А вот с изображением беда: цветовая полоска, при растяжении видимо "раздвигаються" пиксели и между ними заполняется белым цветом...становится похоже на очень бледную картинку и легко видны эти пробелы. Пойду копать дальше...
0
|
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
|
|
24.06.2014, 17:29 | 4 |
Покажите скришот, не ясно что случилось.
Вы стандартный виджет рендерите или свой?
0
|
39 / 39 / 17
Регистрация: 14.10.2013
Сообщений: 174
|
|
24.06.2014, 17:36 [ТС] | 5 |
Виджет из библиотеки Qwt, результат 5-ти кратного растяжения. Сейчас еще пробую другими способами как то сделать.
0
|
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
|
|
24.06.2014, 17:39 | 6 |
А должно быть без белых полосок?
Скорее всего сказывается то что шаг рисования полосок в double рассчитывается, а рисуется уже в int - и это вызывает погрешность которой нет при обычном масштабе.
0
|
39 / 39 / 17
Регистрация: 14.10.2013
Сообщений: 174
|
|
24.06.2014, 17:44 [ТС] | 7 |
Да конечно, вот оригинал.
Что то очень много для погрешности получается(
0
|
39 / 39 / 17
Регистрация: 14.10.2013
Сообщений: 174
|
|
25.06.2014, 00:55 [ТС] | 8 |
Пробую создать новый виджет, как в коде в начале, но сразу нужного размера и снять с него рендер. Процедура получается, но цифры все же плывут, и это очень странно.
Добавлено через 6 часов 59 минут Вообщем в итоге пришел к следующему костылю: Беру рендер виджета, далее масштабирую непосредственно QImage, получаю картинку с приемлемым изображение цветовой шкалы, но смазанным текстом. Далее беру второй рендер но сразу же масштабируя QPainter::scale(...); - получаю отличный текст + ось(но непригодную цветовую шкалу), вырезаю нужный кусок и вставляю в первое изображение.
0
|
596 / 396 / 79
Регистрация: 23.10.2013
Сообщений: 1,143
|
||||||
25.06.2014, 10:10 | 9 | |||||
А что если задать бэкграунд виджета через градиент с помощью setStyleSheet() ???
Тогда при изменении размеров виджета все будет гладко и без без искажений. Примерный вариант градиента:
1
|
25.06.2014, 10:49 | 10 | |||||
Собственно, а почему бы не попробовать в вектор отрисовать?
Создать объект класса QSvgGenerator и передать его в
1
|
39 / 39 / 17
Регистрация: 14.10.2013
Сообщений: 174
|
|
26.06.2014, 13:33 [ТС] | 11 |
Была такая идея сразу, быстро отказался не придумав как организовать, т.к. генератор рассчитан на запись сразу в файл(?). Немножко позже еще раз попробую организовать.
хм, никогда таким не занимался но в целях изучения стоит попробовать. Единственное боюсь что градиенты могут где-то не совпадать. Так же только попробую попозже немножко.
0
|
596 / 396 / 79
Регистрация: 23.10.2013
Сообщений: 1,143
|
||||||
26.06.2014, 15:18 | 13 | |||||
Ну так можно всегда подправить значения градиента так, чтобы совпадали.
Добавлено через 28 минут Вот, наверное что-то похожее на то, что вам нужно:
1
|
26.06.2014, 15:18 | |
26.06.2014, 15:18 | |
Помогаю со студенческими работами здесь
13
Чтение URL адресса из окна виджета и открытие его браузером при нажатии кнопки виджета Что такое виртуальный и относительный виртуальный адрес? Перебиваются стили виджета Nav::widget при подключении виджета \yii\jui\Dialog::widget Нужно клонировать виртуальный жесткий диск из RAID 0 на виртуальный жесткий диск в RAID 1 (зеркало) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |