Я разрабатываю приложение для рисования, которое позволяет создавать и редактировать очень маленькие спрайты и плитки для встроенного приложения. Вот оно в действии . Мы говорим об элементах размером 8x8 пикселей. Это приложение позволяет редактировать отдельные пиксели за раз, и в настоящее время я в процессе его изменения, чтобы позволить вам редактировать несколько спрайтов на листе одновременно в редакторе, что делает процесс разработки более крупных спрайтов, состоящих из многократные спрайты 8x8 намного проще.
Точно так же, как действовал оригинальный NES, эти спрайты / тайлы ограничены и определены цветовой палитрой с ограничением в 16 цветов. Проводя исследование, я обнаружил, что у QImage
s может быть установлен режим индексирования и ему может быть назначена индексированная таблица цветов, и это именно то, что мне нужно.
В нынешнем виде он использует QGraphicsScene/View
для отображения QImage
в индексированном режиме. Однако проблема заключается в том, что по мере увеличения редактируемой области, т. Е. Чем больше элементов 8x8 вы хотите редактировать в данный момент времени, может показаться, что производительность будет снижаться соразмерно, поскольку вам нужно преобразовать все QImage
в QPixmap
и обновлять объект в QGraphicsScene
каждый раз, когда изменяется пиксель.
Можно разбить сцену на отдельные 8x8 QImage
s и объединить их, чтобы они выглядели как одно объединенное изображение, однако это больше похоже на взломать, и это определенно усложнит логи c.
Итак, каков правильный подход к этой проблеме?