2016-08-01 13 views
1

Я использую qt для разработки простого приложения рисования.Получение индекса пикселей, охватываемого qpen при использовании qpainter на qimage

У меня есть qImage и заполняется как trasparent.

QImage *m_markerImg = new QImage(400,320, QImage::Format_ARGB32_Premultiplied); m_markerImg -> fill(Qt::transparent);

Я создал пользовательские графики сцены, унаследовав его от QGraphicsScene & рисования линии на этом изображении в MouseMove случае графической сцены, как:

QPointF plotPoint = mouseEvent->scenePos(); m_painter.drawLine(m_initPoint,plotPoint); m_initPoint=plotPoint;

где m_initPoint это время назначенный в событии нажатия мыши. Все работает нормально, и я могу рисовать линии над этим изображением. Теперь я хочу сохранить пиксели, охваченные этой строкой во время выполнения, т. Е. Во время рисования линии. Хотя я могу хранить точки, на которых я рисую, т. Е. M_initPoint & plotPoint, но в случае, если penwidth установлен в более чем 1, тогда я получу только один пиксель линии, тогда как мне нужны все пиксели, покрытые шириной этого линия.

Как я могу это получить?

ответ

0

Вам нужно:

  1. Преобразование строки в пути,
  2. Погладьте путь с помощью QPainterPathStroker (смотри также this example)
  3. Получить погладил путь в виде полигона,
  4. Scan (итерация) пикселей многоугольника - см. this question для полного примера.
+0

Извините, Куба Обер, но я не знаю, как погладить линию. Не могли бы вы предоставить дополнительную информацию об этом? –

+0

@ShubhamSaini Я связал соответствующую документацию/примеры. –

+0

Спасибо, что посмотрели на проблему, я попробую ваше решение. Пока я решил это, итерации соседних пикселей в окрестности. то есть я запускаю петли на пикселах в окрестности, проверяя их цвет и, если они имеют тот же цвет, что и я, применяемый к ним, я добавляю их в QList . Это решение моей проблемы. –

 Смежные вопросы

  • Нет связанных вопросов^_^