おそらく簡単に解決できる問題に直面していますが、正しく理解できません: 2 つの QImages、固定サイズの背景イメージimgBg
、およびimgFg
アフィン変換を使用して変換し、ペイント (およびクリップ) する必要がある 2 つ目の QImage があります。背景画像。
アフィン変換は次のとおりです。
- 原点を中心にイメージをスケーリング (均一なスケーリング)
- 原点を中心に画像を回転
- 前景の画像の中心が基準位置にくるように、前景の画像を背景画像上の特定の基準位置に移動します。
これが私がこれまでに行ったことです:
// Setup transform
QTransform trans;
trans.translate(-imgFg.width()/2, -imgFg.height()/2); // move center of image to origin
trans.scale(scaleFac, scaleFac);
trans.rotate(angleDegrees);
trans.translate(imgFg.width()/2, imgFg.height()/2);
// Transform foreground image
imgFg = imgFg.transformed(trans);
// Paint on background image
QPointF referencePos(imgBg.width()/3, imgBg.height()/2); // some reference position
QPainter painter(&imgBg);
painter.drawImage(referencePos - QPointF(imgFg.width()/2, imgFg.height()/2), imgFg);
基準位置だけを変更する限り、すべて正常に動作します。スケーリングおよび/または回転を使用すると、画像も正しくスケーリングおよび回転されますが、正しい位置に配置されません (前景の画像の中心が基準点と一致しません)。変換パイプラインに何か問題がありますか? 私は間違いを犯しましたか?