2013-07-17 7 views
6

은 내가 이런 식으로 자주 픽스맵을 변경 QLabel이 있습니다(Qt C++) 픽스맵의 크기를 조정하고 픽셀 화를 유지 하시겠습니까? 내 프로젝트에서

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

slot_pic 단순히 2D 맵입니다. 그래서 당신은 이런 식으로 명확하게 볼 수 있습니다 :

ui->frameLabel->setPixmap(pixmap); 

이미지의 크기는 16 × 16이고 내 레이블은 32 × 32이다. 나는 scaledContents를 체크하여 픽스맵이 바뀌면 이미지의 크기가 두 배가됩니다. 그러나 이미지가 흐려집니다. 나는 이유를 이해하지만 그것이 pixelated 머물 수있는 방법이 있는지 궁금 해서요. 나는 더 큰 픽셀 화 된 이미지를 원한다. QLabel이 스케일링을하지 못하게 시간 :

+0

'QPainter'에서 설정할 수있는'RenderHints'가 있습니다. 안티 앨리어싱을 비활성화 할 수 있습니다. 이 플래그를 사용하기 위해'QLabel :: paintEvent'를 얻는 방법에 대해서는 잘 모르겠습니다. –

+0

나는 QPainter를 망쳐 본 적이 없으므로 나는 그것에 대해 조사해야 할 것이다. 내 프로그램에서 픽스맵이 생성되지 않고 있습니다. 그것의 단지 자원 png 파일. 하나의 작은 이미지가 있고 그것을 클릭하면 레이블이 동일한 이미지를 표시하지만 더 커집니다. – mrg95

답변

15

에 대한

감사합니다 (즉, 당신이 무슨 뜻인지 이해하는 데 도움이 경우 이미지는 마인 크래프트에서이다). 대신, 직접 QPixmap::scaled()을 사용하여 비율 조정을 수행하십시오. 이런 식으로 뭔가가 :

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

중요한 매개 변수는 이중 선형 필터링 사용 여부를 알려줍니다 마지막, transformMode입니다.

+0

이것은 완벽하게 작동했습니다. 오류가없고 단순했습니다. 고마워요 :) – mrg95

+0

멋진 답변 주셔서 감사합니다. 나는 이것에 대해 알고이 기법을 사용하려고 생각했지만 Qt 디자이너 (가능한 경우)에서 스타일 시트를 사용하여 직접 설정할 수있는 무언가를 찾고있다! 그게 뭐니? 누군가? – zeFree