在qimage上使用qpainter时获取qpen所覆盖的像素索引

时间:2016-08-01 13:56:03

标签: qt qgraphicsitem qgraphicsscene qpainter qimage

我正在使用qt开发一个简单的绘图应用程序。

我有一个qImage并将其填充为trasparent。

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

我通过从qgraphicsscene&amp ;;继承它创建了一个自定义图形场景。在图形场景的mousemove事件中在此图像上绘制一条线:

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

在鼠标按下事件中分配m_initPoint。一切都很好,我能够在这张图片上画线。现在我想在运行时,即在线条绘制期间存储该线所覆盖的像素。 虽然我可以存储我正在绘制的点,即m_initPoint& plotPoint但是如果penwidth设置为大于1,那么我将只得到一个单行像素,而我需要整行的像素宽度覆盖。

我怎么能得到它?

1 个答案:

答案 0 :(得分:0)

你需要:

  1. 将线路转换为路径
  2. 使用QPainterPathStroker描述路径(另请参阅this example),
  3. 将描边路径作为多边形
  4. 扫描(迭代)多边形的像素 - 有关完整示例,请参阅this question