QTransform quadToQuad始终返回false
我正在尝试使用quadToQuad来变换坐标,这样我就可以在调整大小的图像上绘制一个像素,并将坐标转换回原始图像 出于示例目的,我制作了两个矩形,但quadToQuad函数总是返回false 有人知道它为什么会失败吗QTransform quadToQuad始终返回false,qt,qml,blackberry-10,Qt,Qml,Blackberry 10,我正在尝试使用quadToQuad来变换坐标,这样我就可以在调整大小的图像上绘制一个像素,并将坐标转换回原始图像 出于示例目的,我制作了两个矩形,但quadToQuad函数总是返回false 有人知道它为什么会失败吗 QRectF origRect(QPointF(0, 0), QPointF(800, 800)); QRectF resizeRect(QPointF(0, 0), QPointF(400, 400)); QTransform mappingTransform; qDebu
QRectF origRect(QPointF(0, 0), QPointF(800, 800));
QRectF resizeRect(QPointF(0, 0), QPointF(400, 400));
QTransform mappingTransform;
qDebug() << (QTransform::quadToQuad(origRect, resizeRect, mappingTransform));
QPointF point = mappingTransform.map(QPointF(x, y));
qrectforigrect(QPointF(0,0),QPointF(800800));
QRectF resizeRect(QPointF(0,0),QPointF(400400));
Q变换映射变换;
qDebug()我认为问题在于quadToQuad将QPolygonF作为输入,而不是QRectF。在声明mappingTransform后尝试插入以下内容:
QPolygonF orig(origRect);
QPolygonF resize(resizeRect);
qDebug() << (QTransform::quadToQuad(orig, resize, mappingTransform));
QPolygonF-orig(origRect);
QPolygonF resize(resizeRect);
qDebug()对此进行了一次尝试,但仍然返回false。谢谢!我会试试这个然后再给你回复。什么是QRectF tileBox(QPointF(w,s+D),QPointF(w+D,s));w、 s和D?也帮了我,谢谢。使用构造函数和您的方法之间的区别在于,QPolygonF的构造函数创建了一个“闭合”多边形(第一个点=最后一个点),结果是5个点,而您的代码只创建了4个点(“开放”多边形)。
QRectF tileBox(QPointF(w, s+D), QPointF(w+D, s));
QPolygonF q0 = rectToQuad(tileBox);
QPolygonF q1;
q1 << QPointF(0,0)
<< QPointF(1201,0)
<< QPointF(1201,1201)
<< QPointF(0, 1201);
QTransform tileTransform;
bool ok = QTransform::quadToQuad(q0, q1, tileTransform);
QPolygonF MyClass::rectToQuad(QRectF rect) {
QPolygonF quad;
quad << rect.topLeft()
<< rect.topRight()
<< rect.bottomRight()
<< rect.bottomLeft();
return quad;
}