Каков подходящий метод реализации большой редактируемой пикселем области рисования в Qt - PullRequest
0 голосов
/ 24 января 2020

Я разрабатываю приложение для рисования, которое позволяет создавать и редактировать очень маленькие спрайты и плитки для встроенного приложения. Вот оно в действии . Мы говорим об элементах размером 8x8 пикселей. Это приложение позволяет редактировать отдельные пиксели за раз, и в настоящее время я в процессе его изменения, чтобы позволить вам редактировать несколько спрайтов на листе одновременно в редакторе, что делает процесс разработки более крупных спрайтов, состоящих из многократные спрайты 8x8 намного проще.

Точно так же, как действовал оригинальный NES, эти спрайты / тайлы ограничены и определены цветовой палитрой с ограничением в 16 цветов. Проводя исследование, я обнаружил, что у QImage s может быть установлен режим индексирования и ему может быть назначена индексированная таблица цветов, и это именно то, что мне нужно.

В нынешнем виде он использует QGraphicsScene/View для отображения QImage в индексированном режиме. Однако проблема заключается в том, что по мере увеличения редактируемой области, т. Е. Чем больше элементов 8x8 вы хотите редактировать в данный момент времени, может показаться, что производительность будет снижаться соразмерно, поскольку вам нужно преобразовать все QImage в QPixmap и обновлять объект в QGraphicsScene каждый раз, когда изменяется пиксель.

Можно разбить сцену на отдельные 8x8 QImage s и объединить их, чтобы они выглядели как одно объединенное изображение, однако это больше похоже на взломать, и это определенно усложнит логи c.

Итак, каков правильный подход к этой проблеме?

...