web-dev-qa-db-ja.com

Qt:画像のサイズを変更してその比率を維持するにはどうすればよいですか?

このQt example は、ダイアログに含まれる画像のサイズを変更する方法を示しています。これにより、ダイアログのサイズが変更されると、それに応じて画像が引き伸ばされます。

画像を歪ませたり、比率を同じに保ったりせずに、同じ方法で画像のサイズを変更するにはどうすればよいですか?

もちろん、ダイアログの幅/高さの比率が画像のものと異なる場合、「灰色」の領域が表示されます。
Qt::KeepAspectRatio列挙型が見つかりましたが、それを使用する関数が見つかりませんでした。

Update:これは私が試しているコードです:

QImage image(path);
QImage image2 = image.scaled(200, 200, Qt::KeepAspectRatio);
QLabel *plotImg = new QLabel;
plotImg->setScaledContents(true);
plotImg->setPixmap(QPixmap::fromImage(image2));

ラベルのサイズを変更しても、画像は一定のアスペクト比を維持しません。また、再スケーリング後に解像度が失われます。

9
Pietro

使用 - QImage::scaled 関数。

QImage img("someimage.png");
QImage img2 = img.scaled(100, 100, Qt::KeepAspectRatio);

QPixmapに必要な場合、 同じ名前の関数が存在します

18