画线到QImage

时间:2014-12-22 14:23:58

标签: c++ qt qpainter qimage

我正在尝试将线条绘制到QImage并在Qlabel中显示。但是我有一些我无法解决的问题。

    QPixmap px;
    px.fromImage (imgRaw);  // define in header file QImage imgRaw; 

    QPainter p (&px);
    p.setPen (Qt::red);

    p.drawLine (mouseStart_X, mouseStart_Y, mouseReleased_X, mouseReleased_Y);
    p.end ();

    ui->lblRightImg->setPixmap (px);
    ui->lblRightImg->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
    ui->lblRightImg->setScaledContents(true);

当我使用上面的代码时,它会出现这样的错误:

    QPainter::begin: Paint device returned engine == 0, type: 2
    QPainter::setPen: Painter not active
    QPainter::end: Painter not active, aborted

然后我更改了我的代码,因为它尝试绘制null pixmap,所以在更改代码之后:

    QPixmap px(100, 100);
    px.fromImage (imgRaw);  // define in header file QImage imgRaw;

然后它会产生嘈杂的图像(黑色和灰色的破碎图像)

你能帮我解决一下这个问题吗?

编辑:

也尝试过:

QPixmap px = QPixmap::fromImage (imgRaw);

然后它给出相同的图像,没有任何绘图..

1 个答案:

答案 0 :(得分:4)

fromImage是QPixmap的静态函数,不会影响您的'对象,它会返回您想要的像素图。尝试使用以下代码初始化像素图:

QPixmap px = QPixmap::fromImage(imgRaw);