【问题标题】:Drawing line to QImage画线到 QImage
【发布时间】:2014-12-22 14:23:57
【问题描述】:

我正在尝试画线到 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

然后我更改了我的代码,因为它试图绘制空像素图,​​所以在更改了这样的代码之后:

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

然后它给出嘈杂的图像(黑色和灰色的破碎图像)

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

编辑:

也试过了:

QPixmap px = QPixmap::fromImage (imgRaw);

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

【问题讨论】:

  • 很抱歉我忘记提及这一点。我也尝试了您的解决方案,但之后它没有绘制任何东西。我又得到了原始图像。
  • 你的应用是多线程的吗?
  • 我在从 mousepressed 发出信号后绘制这条线..

标签: c++ qt qpainter qimage


【解决方案1】:

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

QPixmap px = QPixmap::fromImage(imgRaw);

【讨论】:

  • 尝试从 pos(0,0) 到 pos(px.width(),px.height()) 画一条线,以确保问题不在于您传递的值.此外尝试删除p.end() 或在setPixmap-call 之后移动它
  • “替代”drawLine 是怎么回事? mouseStart_X、mouseStart_Y、mouseReleased_X、mouseReleased_Y的取值和图片大小分别是多少?
  • 你是对的。问题是关于 x,y 坐标我将其更改为 (50, 50, 100, 100) 并看到有问题.. 谢谢您的帮助。
猜你喜欢
  • 2016-09-19
  • 1970-01-01
  • 2020-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-12
相关资源
最近更新 更多