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

Qt 在qimage上使用qpainter时获取qpen覆盖的像素索引,qt,qgraphicsitem,qgraphicsscene,qpainter,qimage,Qt,Qgraphicsitem,Qgraphicsscene,Qpainter,Qimage,我正在使用qt开发一个简单的绘图应用程序 我有一个qImage并将其填充为trasparent QImage*m_markerImg=新的QImage(400320,QImage::Format_ARGB32_预乘); m_markerImg->fill(Qt::transparent) 我通过继承QGraphicscene创建了一个自定义图形场景,并在图形场景的mousemove事件中在此图像上画了一条线,如下所示: QPointF plotPoint=mouseEvent->scenePos

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

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

QImage*m_markerImg=新的QImage(400320,QImage::Format_ARGB32_预乘);
m_markerImg->fill(Qt::transparent)

我通过继承QGraphicscene创建了一个自定义图形场景,并在图形场景的mousemove事件中在此图像上画了一条线,如下所示:

QPointF plotPoint=mouseEvent->scenePos();
m_painter.绘制线(m_初始点、绘图点);
m_initPoint=绘图点

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

我怎么能得到这个

您需要:

  • 将线转换为路径
  • 使用(另请参见)笔划路径
  • 将笔划路径获取为多边形
  • 扫描(迭代)多边形的像素-有关完整示例,请参见
  • 您需要:

  • 将线转换为路径
  • 使用(另请参见)笔划路径
  • 将笔划路径获取为多边形
  • 扫描(迭代)多边形的像素-有关完整示例,请参见

  • 对不起,库巴·奥伯,但我不知道如何划清界线。你能提供更多的信息吗?@ShubhamSaini我已经链接了相关文档/示例。感谢你调查这个问题,我将尝试你的解决方案。现在我通过迭代附近的像素来解决这个问题。i、 我在附近的像素上运行循环,检查它们的颜色,如果它们的颜色与我在它们上应用的颜色相同,我会将它们附加到QList中。这解决了我的问题。对不起,库巴·奥伯,但我不知道如何划清界限。你能提供更多的信息吗?@ShubhamSaini我已经链接了相关文档/示例。感谢你调查这个问题,我将尝试你的解决方案。现在我通过迭代附近的像素来解决这个问题。i、 我在附近的像素上运行循环,检查它们的颜色,如果它们的颜色与我在它们上应用的颜色相同,我会将它们附加到QList中。它正在解决我的问题。