У меня небольшой вопрос о том, как реализовать какой-то графический редактор.Для рисования я использую этот метод: сначала я проверяю, нажата ли левая кнопка мыши, затем я рисую один пиксель в event-> pos () на моем QPixmap, и после этого я вызываю update ();перерисовать это.Я также рисую линии на QPixmap между двумя точками, если мышь перемещается с нажатой кнопкой (потому что без нее будет только несколько точек).Это работает довольно хорошо, но я хочу знать, есть ли более оптимизированный метод для этого.Вот некоторый код (я пропустил части с масштабированием, соединяя недостающие пиксели между пикселями и т. Д.)
void Editor::paintEvent(QPaintEvent *event)
{
painter.drawPixmap(QRect(0, 0, image.width() * zoom , image.height() * zoom),
image);
}
void Editor::mousePressEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton)
{
setImagePixel(event->pos());
}
}
void Editor::mouseMoveEvent(QMouseEvent *event)
{
if(event->buttons() & Qt::LeftButton)
{
setImagePixel(event->pos(), true);
}
}
void Editor::setImagePixel(const QPoint &pos)
{
QPainter painter(&image);
if(image.rect().contains(i, j))
{
painter.begin(&image);
painter.setPen(primaryColor);
painter.drawPoint(i, j);
painter.end();
}
}