2013-07-17 20 views
6

ben böyle sık sık pixmap değiştirmek QLabel vardır:(Qt C++) pixmap ve KEEP pikselleştirmeyi yeniden boyutlandırın mı? Projemde

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

slot_pic sadece 2d haritasıdır. Yani bu gibi net bakabilirsiniz:

ui->frameLabel->setPixmap(pixmap); 

resmin boyutu 16x16 ve benim etiket 32x32 olduğunu. Pixmap değiştiğinde, resmin boyutu iki katına çıktı. Ancak, görüntü şimdi bulanık. Neden olduğunu anlıyorum, ama pikselli kalmasını sağlamanın bir yolu olup olmadığını merak ediyordum. Sadece daha büyük pikselli bir görüntüye sahip olmak istiyorum. QLabel ölçeklendirme yapmasına izin verme zaman :)

+0

"QPainter" içinde ayarlayabileceğiniz bazı "RenderHints" vardır. Orada antialiasing'i devre dışı bırakabilirsiniz. Bu bayrağı kullanmak için 'QLabel :: paintEvent' nasıl elde edeceğime emin değilim. –

+0

Hiç QPainter ile uğraşmadım, böylece bakmam gerekecek. Pixmap programımda oluşturulmuyor, sadece bildiğiniz gibi. Onun sadece bir kaynak png dosyası. Daha küçük bir resmim var ve tıkladığınızda, bir etiket aynı resmi gösterir ancak daha büyük. – mrg95

cevap

15

için

Teşekkür (yani ne demek istediğimi anlamaya yardımcı olur görüntü Minecraft dan). Bunun yerine, QPixmap::scaled()'u kullanarak kendiniz ölçeklendirin. Böyle bir şey:

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

önemli parametre çift doğrusal filtreleme kullanılır olup olmadığını söyler sonuncusu transformMode vardır.

+0

Bu, MÜKEMMEL çalıştı. Sıfır hatalar ve basitti. Teşekkürler :) – mrg95

+0

Güzel cevap için teşekkürler. Bunu biliyorum ve bu tekniği kullanmayı düşünüyordum, ancak stil sayfasını kullanarak doğrudan Qt Tasarımcısı'nda (eğer mümkünse) ayarlanabilecek bir şey arıyorum! Böyle bir şey var mı? Kimse? – zeFree

İlgili konular