Название: Бленд по маске Отправлено: Igors от Января 25, 2014, 15:36 Добрый день
В коде paintEvent нужно для заданного QRect - если цвет пикселя отличается от заданного не более чем на <константа>, то заменить этот цвет на другой - поделить RGB пикселя на заданное значение (по-простому "затемнить"), но при этом не трогать заданный цвет (background) Конечно это очень просто для QImage, но его нет, есть только QPainter. Как это сделать "легально" не спрыгивая в нативняк, не влезая в приватные хедеры и.т.п. Спасибо Название: Re: Бленд по маске Отправлено: Igors от Января 27, 2014, 13:20 Апну тему, попробую "поддержать разговор" :) На первый взгляд ограничение кажется глупым, ну как это "нет QImage"? Да отрендерить сначала в QImage, потом его нарисовать - и все дела! Именно с этого я (резво) начинал
1) Сначала поставил всем окнам кеш. Да, так проблем с растровыми операциями нет, но приложение при старте заняло ~300Mb памяти (50 при прежнем заведующем). И это еще не все окна созданы. Как ни крути, а triple-buffer = неграмотно, теория права 2) Хорошо, тогда при каждом рисовании сначала рисуем в QImage, который будет удален после того как отрисован. Конечно это не украшает, т.к. приличный буфер создается на каждом paint. Ну ладно, это можно пережить, но я попадаю в др беду - теперь ведь нет возможности рисовать адаптивно. Пример: пользователь кликнул в прямоугольник - ну я его и подсветил (или убрал подсветку) теми операциями что описаны выше. А с буфером QImage у меня содержимое пр-ка нет (он создается пустой), и нереально выдрать код рисования именно его (этой области) из тонны кода paint Мда, не все так просто как хотелось бы :) |