2013-07-17 10 views
6

は、私はこのように頻繁にピックスマップを変更QLabelを持っている:(Qt C++)pixmapとKEEPピクセルのサイズを変更しますか?私のプロジェクトで

ui->frameLabel->setPixmap(slot_pic[blockId[currentSlot]][damageId[currentSlot]]); 

slot_picは、単に2Dマップです。だから、このように明確に見ることができます:

ui->frameLabel->setPixmap(pixmap); 

画像のサイズは16x16で、ラベルは32x32です。私はscaledContentsをチェックして、pixmapが変更されたときにイメージのサイズが2倍になるようにしました。ただし、画像がぼやけています。私は理由を理解していますが、ピクセル化された状態にする方法があるのだろうかと思っていました。私はちょうどより大きなピクセル化されたイメージを持っています。お時間を

感謝:)

+0

'QPainter'で設定できるいくつかの' RenderHints'があります。アンチエイリアスを無効にすることができます。私は 'QLabel :: paintEvent'をこのフラグを使う方法を知りません。 –

+0

私はそれを調べなければならないので、私はQPainterを決して乱さなかった。ピックスマップは自分のプログラムで作成されていないので、知っているだけです。その単なるリソースのPNGファイルです。小さな画像が1つあり、クリックすると同じラベルが表示されますが大きめです。 – mrg95

答えて

15

はQLabelは、スケーリングをやらないでください(つまり、あなたは私が何を意味するか理解するのに役立ちます場合は画像がMinecraftのからです)。代わりに、QPixmap::scaled()を使用して自分でスケーリングを行います。このような何か:

ui->frameLabel->setPixmap(
    pixmap.scaled(32, 32, Qt::IgnoreAspectRatio, Qt::FastTransformation)); 

は重要なパラメータは、バイリニアフィルタリングが使用されているかどうかを伝える最後の1、transformMode、です。

+0

これは完全に機能しました。エラーはゼロでシンプルでした。ありがとうございました:) – mrg95

+0

素敵な答えをありがとう。私はこれについて知っていて、このテクニックを採用することを考えていましたが、スタイルシートを使用してQtデザイナ(可能な場合)に直接設定できるものを探しています!そのようなものは何ですか?誰でも? – zeFree

関連する問題