gpt4 book ai didi

QTransform quadToQuad 总是返回 false

转载 作者:行者123 更新时间:2023-12-04 13:18:25 24 4
gpt4 key购买 nike

我正在尝试使用 quadToQuad 转换坐标,以便我可以在调整大小的图像上绘制一个像素,并将该坐标传输回原始图像。

出于示例目的,我制作了 2 个矩形,但 quadToQuad 函数始终返回 false。

有谁知道为什么会失败?

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));

最佳答案

就我而言,问题在于 quadToQuad 将 QPolygonF 作为输入,而不是 QRectF。尝试在声明 mappingTransform 后插入以下内容:

QPolygonF orig(origRect);
QPolygonF resize(resizeRect);
qDebug() << (QTransform::quadToQuad(orig, resize, mappingTransform));

深入研究我的一些源代码,这就是我计算一次转换的方式:

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);

我这样编写 rectToQuad:

QPolygonF   MyClass::rectToQuad(QRectF rect) {
QPolygonF quad;

quad << rect.topLeft()
<< rect.topRight()
<< rect.bottomRight()
<< rect.bottomLeft();

return quad;
}

所以我一定遇到了与您类似的问题。您可能希望尝试类似的方法。

关于QTransform quadToQuad 总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15853943/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com