Название: Как дорисовать точку? Отправлено: phpCoder от Январь 09, 2015, 15:03 Есть виджет. По нему тыкают мышью - на экране должна нарисоваться точка в месте, где тыкнули. Как нарисовать там точку?
Непонятно: 1. как собственно дорисовать точку. Именно ДОрисовать, а не перерисовать весь экран? 2. настройка рисовальщика. Смотрел примеры - какие-то они убогие. Везде в paintEvent определяется Qpainter, его настройки и прочее. Это что же получается: миллиард раз этот метод будет вызван, миллиард раз создастся пейнтер и в миллиардный раз в него поставят те же самые настройки? А я хочу определить его в конструкторе класса, запихнуть в него все что нужно - антиалиасинг, ручку и т.д. и уже после этого рисовать. Что для этого нужно? Название: Re: Как дорисовать точку? Отправлено: Bepec от Январь 09, 2015, 15:09 Вы не представляете себе всех широт открытий. Да, именно 100500 раз будет вызван пейнтер и перерисован) А чтобы вам дорисовать точечку, то надо лишь добавить свою секцию отрисовки в paintEvent :D
Название: Re: Как дорисовать точку? Отправлено: phpCoder от Январь 09, 2015, 15:14 Зачем так по-глупому сделано? 100500 раз выполнить однотипные действия... - это же не приложение будет, а улитка какая-то.
Название: Re: Как дорисовать точку? Отправлено: Bepec от Январь 09, 2015, 15:23 Скорость отрисовки на уровне) А вы никогда не задумывались, что при нажатии кнопки перерисовывается эдак 400-500 точек ) А при слайдинге перерисовывается до несколько сотен тысяч за пару секунд :D
PS не парься, всё быстро и путём :) Название: Re: Как дорисовать точку? Отправлено: phpCoder от Январь 09, 2015, 16:36 Ну и как дорисовать точку?
Точек два вида - одни красные и круглые, а другие - синие и квадратные. Тип задает юзером через комбобокс. Точки складируются в массив. Тип точки - тоже в массив. В paintEvent прогонять массив в цикле и сменять на каждой итерации ручку не хочу. Это извращение. Как тогда? Название: Re: Как дорисовать точку? Отправлено: Bepec от Январь 09, 2015, 17:03 Точки всегда квадратные ибо пиксель квадратный :D
У вас видимо круги и квадраты :) А что вы предлагаете? Как вы ещё можете отрисовать N количество кругов и квадратов, кроме как храня их координаты в массиве и проходя по ним в цикле? :) PS может вы придумаете новый способ или конструкцию языка для этого? Название: Re: Как дорисовать точку? Отправлено: Old от Январь 09, 2015, 17:47 PS может вы придумаете новый способ или конструкцию языка для этого? Можно дорисовывать фигуры на QImage, а уже его рисовать на виджет.Название: Re: Как дорисовать точку? Отправлено: Bepec от Январь 09, 2015, 19:13 Ну и стоить добавить, что Qt так и делает :)
Название: Re: Как дорисовать точку? Отправлено: Old от Январь 09, 2015, 19:16 Ну и стоить добавить, что Qt так и делает :) При чем здесь Qt?Название: Re: Как дорисовать точку? Отправлено: Kurles от Январь 09, 2015, 21:05 PS может вы придумаете новый способ или конструкцию языка для этого? Можно дорисовывать фигуры на QImage, а уже его рисовать на виджет.Название: Re: Как дорисовать точку? Отправлено: Bepec от Январь 09, 2015, 21:27 Потому что Qt использует двойную буферизацию и в качестве буфера по умолчанию QImage :)
Так что принцип тот же :D PS оммм, хотя в пятерке хз как :) Название: Re: Как дорисовать точку? Отправлено: Old от Январь 09, 2015, 21:39 Потому что Qt использует двойную буферизацию и в качестве буфера по умолчанию QImage :) Да какая разница, как это где делается.Так что принцип тот же :D PS оммм, хотя в пятерке хз как :) Вы сокрушались, что других способов нет: Как вы ещё можете отрисовать N количество кругов и квадратов, кроме как храня их координаты в массиве и проходя по ним в цикле? :) Я вам предложил еще один вариант. Название: Re: Как дорисовать точку? Отправлено: Hrundel от Январь 09, 2015, 22:31 Ну и как дорисовать точку? Точек два вида - одни красные и круглые, а другие - синие и квадратные. Тип задает юзером через комбобокс. Точки складируются в массив. Тип точки - тоже в массив. В paintEvent прогонять массив в цикле и сменять на каждой итерации ручку не хочу. Это извращение. Как тогда? А может быть для начала лучше книжку Шлее почитать? Там и про точечки, и про кружочки,... и даже про квадратики. Название: Re: Как дорисовать точку? Отправлено: Bepec от Январь 09, 2015, 23:01 Old, чтобы отрисовать кучу кружочков и квадратиков нужно всё равно
Цитировать прогонять массив в цикле . Твоё предложение это скорее просто перенос того же кода в другое место :) Название: Re: Как дорисовать точку? Отправлено: Old от Январь 09, 2015, 23:07 Old, чтобы отрисовать кучу кружочков и квадратиков нужно всё равно Какой массив?Цитировать прогонять массив в цикле . Твоё предложение это скорее просто перенос того же кода в другое место :) Юзер клацнул в экран - нарисовали фигуру, еще раз клацнул - еще одну. Название: Re: Как дорисовать точку? Отправлено: kambala от Январь 10, 2015, 00:00 В paintEvent прогонять массив в цикле и сменять на каждой итерации ручку не хочу. Это извращение. пройдись сперва по четным индексам, а потом — по нечетным (ну или наоборот)Как тогда? Название: Re: Как дорисовать точку? Отправлено: Bepec от Январь 10, 2015, 00:37 Old тут уже вмешиваются мои мысли о функционале - вполне возможно надо будет как то классифицировать точки в будущем, иметь возможность отменить последнюю и прочая :) Следовательно нужен будет массив данных, пусть и отрисовывающийся единожды :)
Название: Re: Как дорисовать точку? Отправлено: Igors от Январь 10, 2015, 10:12 Кстати о птичках - рисовать адаптивно можно
Код Во всяком случае с пятеркой работает на OSX и Вындоуз |