Название: Пипетка для QGraphicsVeiw Отправлено: Hrundel от Июль 20, 2015, 15:37 Всем привет!
Есть необходимость сделать пипетку для QGraphicsVeiw. Приходит в голову мысль рендерить QGraphicsVeiw в память и потом шарить пипеткой по памяти. Есть более простые нативные варианты или это единственный путь к цели? Всем спасибо. Название: Re: Пипетка для QGraphicsVeiw Отправлено: Bepec от Июль 20, 2015, 16:03 Тоже видится рендер - только не шарить там, а рендерить сразу нужный пиксель.
PS можно и grabWidget, но у рендера преимущество в виде передаваемой области :) Название: Re: Пипетка для QGraphicsVeiw Отправлено: Igors от Июль 20, 2015, 16:26 В смысле сграбить пыксель? Ну рендерить на каждое движение мыши - просто недостойно человека с университетским образованием :) Надо через QBackingStore, там выскочить на QPaintDevice который привести к QImage. Уже давненько так лазил садами-огородами (помню только Верес голосил :)) но получалось, точно. Др словами до буфера окна достучаться можно.
Название: Re: Пипетка для QGraphicsVeiw Отправлено: Hrundel от Июль 20, 2015, 21:16 Ладно, извращусь - посчитаю, что оптимальнее. ;)
Спасибо всем. Название: Re: Пипетка для QGraphicsVeiw Отправлено: Hrundel от Июль 21, 2015, 22:33 Ох, Игорь, глыбоко ты все-таки Кутешные классы знаешь. Заодно, хоть, научишь, что достойно человека с университетским образованием. ;) :P
Твой метод оптимальнее. Извеняй, Верес, так вышло - O(logN) лучше чем O(N^2) Но повозиться придеться, конечно. Пока я это все расковыряю, как там с пайнт дивайса свой пыксель получить... Название: Re: Пипетка для QGraphicsVeiw Отправлено: gil9red от Июль 21, 2015, 23:41 Твой метод оптимальнее. Извеняй, Верес, так вышло - O(logN) лучше чем O(N^2) А как определяется когда O(logN) или O(N^2), или другое? Название: Re: Пипетка для QGraphicsVeiw Отправлено: Bepec от Июль 22, 2015, 10:58 to Hrundel: каким боком я тут замешан непонятно, я даже не спорил. На основании реплики Igors что я голосил?
PS рад что у тебя всё хорошо. Название: Re: Пипетка для QGraphicsVeiw Отправлено: Igors от Июль 22, 2015, 12:06 А как определяется когда O(logN) или O(N^2), или другое? Вот и я недоумеваю - до чого тут logN ???..повозиться придеться, конечно. Пока я это все расковыряю, как там с пайнт дивайса свой пыксель получить... Как говорят буржуины "I feel your pain" :) Ладно, вот пример (проверял только на Вындоуз)Название: Re: Пипетка для QGraphicsVeiw Отправлено: Hrundel от Июль 22, 2015, 22:32 Твой метод оптимальнее. Извеняй, Верес, так вышло - O(logN) лучше чем O(N^2) А как определяется когда O(logN) или O(N^2), или другое? Дык все же очень просто. O(1) => элементарный шаг в функции => n=1+1; O(N) => линеарный обход => for(int i = 0; i < n; i++) {} O(logN) => бинарный обход => for(int i = 0; i < n; i++) {if(i)} O(N^2) => квадратный обход => for(int i = 0; i < n; i++) {for(int i = 0; i < n; i++){}} и так далее. Всего их 11. Всякие запредельные обходы типа факультетов и экспоненциальных в практике отсутствуют по причине долгих лет исполнения на современных компах. Кажется даже на суперкомах не дают задачи выше полимеальных и матричных инверсий. Но это все уже глухая теория. Если есть необходимость найти оптимальный вариант, нужно смотреть на количество вероятных циклов, вложеных либо одиночных и набор условий. итоговым считается самый худший из встреченых. То есть если в методе есть бинарный и квадратный обход отдельно друг от друга, то метод оценивается как O(N^2). Но ингода есть варианты. Так лучшие алгоритмы собственно когда-то имели худший вариант решений, но потом кто-то типа Дайкстры или Кнута находит вариант получше и получает доктора. Привет, Верес!!! Спасибо за теплые слова. Прости, что упомянул тебя. Просто Игорь обмолвился, что ты принимал участие в дискуссии, вот я и заикнулся. Надеюсь у тебя тоже все хорошо! Игорь, спасибо за код. Сегодня смотреть не стал - зуб болит, катострофа. Завтра обязательно посмотрю. |