C++ 给齐玛格画线
我试图画一条线到QImage,并在Qlabel中显示它。然而,我有一些我无法解决的问题C++ 给齐玛格画线,c++,qt,qpainter,qimage,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, mouseRel
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
然后我更改代码,因为它试图绘制空pixmap,所以在更改代码后,如下所示:
QPixmap px(100, 100);
px.fromImage (imgRaw); // define in header file QImage imgRaw;
然后给出噪声图像(黑色和灰色破碎图像)
你能帮我解决这个问题吗
编辑:
还尝试:
QPixmap px = QPixmap::fromImage (imgRaw);
然后,它会在没有任何绘图的情况下生成相同的图像。
fromImage
是QPixmap的静态函数,不会影响“对象”,它会返回所需的pixmap。尝试使用以下代码初始化pixmap:
QPixmap px = QPixmap::fromImage(imgRaw);
fromImage
是QPixmap的一个静态函数,不会影响您的“对象”,它会返回您想要的pixmap。尝试使用以下代码初始化pixmap:
QPixmap px = QPixmap::fromImage(imgRaw);
很抱歉,我忘了提这件事。我也尝试过你的解决方案,但在那之后,它没有画出任何东西。我又得到了原始图像。你的应用程序是多线程的吗?我是在从鼠标按下发出信号后画这条线的。很抱歉,我忘了提到这一点。我也尝试过你的解决方案,但在那之后,它没有画出任何东西。我再次获得原始图像。你的应用程序是多线程的吗?在我从鼠标按下发出信号后,我正在画这条线。尝试从pos(0,0)到pos(px.width(),px.height())画一条线,以确保问题不是你传递的值。此外,尝试移除
p.end()
或将其移动到setPixmap
-调用“可选”绘制线的后面??mouseStart_X、mouseStart_Y、mouseReleased_X、mouseReleased_Y的值以及图像的大小是多少?你说得对。问题是关于x,y坐标,我把它改成了(50,50,100,100),看到有什么不对劲。。谢谢您的帮助。请尝试从pos(0,0)到pos(px.width(),px.height())划一条线,以确保问题不是您传递的值。此外,尝试移除p.end()
或将其移动到setPixmap
-调用“可选”绘制线的后面??mouseStart_X、mouseStart_Y、mouseReleased_X、mouseReleased_Y的值以及图像的大小是多少?你说得对。问题是关于x,y坐标,我把它改成了(50,50,100,100),看到有什么不对劲。。谢谢你的帮助。