【问题标题】:Getting the pixels index covered by qpen while using qpainter on qimage在qimage上使用qpainter时获取qpen覆盖的像素索引
【发布时间】:2016-08-01 13:56:02
【问题描述】:

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

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

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 ,那么我将只得到一个线像素,而我需要这条线的宽度覆盖的整个像素.

我怎样才能得到它?

【问题讨论】:

    标签: qt qgraphicsitem qgraphicsscene qpainter qimage


    【解决方案1】:

    你需要:

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

    【讨论】:

    • 抱歉 Kuba Ober,但我不知道如何划线。你能提供更多关于它的信息吗?
    • @ShubhamSaini 我已经链接了相关文档/示例。
    • 感谢您调查问题,我会尝试您的解决方案。现在我已经通过迭代附近的像素来解决它。即我在附近的像素上运行循环,检查它们的颜色,如果它们的颜色与我应用于它们的颜色相同,我将它们附加到 QList 中。它正在解决我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多