2017-02-19 5 views
1

큰 프로젝트의 일부로 QPixmap에서 기본 모양을 그리려하지만 생성 된 이미지가 항상 흐릿하게 나타납니다. 원은 순수한 빨간색 원이 아니며 모서리가 흐려지고 예상대로 색상이 빨간색이 아닙니다. 이것은 나중에 내가 필요한 이미지로 문제가됩니다. 여기에 관련 코드 스 니펫이 있는데, 앤티 앨리어싱 옵션을 사용하고 힌트를 렌더링했지만 아무런 행운이 없었습니다. 어떤 도움을 많이 주시면 감사하겠습니다! 나는이 문제를 보여주기 위해 이미지를 포함하도록 요청했습니다Qt Qpixmap은 흐릿한 이미지를 생성합니다.

QPixmap pixmap(QSize(300,300)); 
QPainter painter(&pixmap); 

painter.setRenderHint(QPainter::Antialiasing); 
painter.setRenderHint(QPainter::SmoothPixmapTransform); 

painter.fillRect(QRectF(0, 0, 300, 300),Qt::white); 

painter.setPen(Qt::red); 
painter.drawEllipse(QPoint(150,150), 75, 75); 

painter.setPen(Qt::green); 
QLineF line(30, 30, 30, 270); 
painter.drawLine(line); 

pixmap.save("test1.jpg", "jpg", 100); 

는 여기에 가까운 녹색 선 진정한 녹색되지 않는 및 빨간색 원이 빨간색 사실과 흐린 가장자리 없다는 표시 이미지를 닫습니다. 당신이 빨간색으로이

+0

당신은 안티 앨리어싱은 그때 픽스맵 내에서 가장자리 가까이 검사에 약간 흐리게 표시 기대를 사용할 수있는 경우. 게시물을 수정하여 문제를 보여주는 이미지를 포함시킬 수 있습니까? –

+0

완료! 안티 앨리어싱 라인을 제거해야합니까? 이 줄이 추가되기 전에도 나는 아직도 문제를 가지고 있었다. – user193369

+0

안티 앨리어싱 (antialiasing) 'QPainter'힌트가없는 * 흐려지는 현상이 보이면 다른 일이 벌어지고있는 것 같습니다. 게시 된 코드에서'painter.setRenderHint (QPainter :: Antialiasing); 행을 제거하면 정확히 예상 한대로 작동합니다. 즉 번짐이 없음 –

답변

2

문제는 JPG 형식으로 저장할 때 기본적으로 Qt는 크로마 컬러 서브 샘플링 (2 × 2 블록)를 사용한다는 것입니다. 이 문제를 피할 수있는 유일한 방법은 다른 형식을 사용하는 것입니다. 동일한 이미지를 PNG 형식으로 저장하면 순수한 빨간색 원 (255,0,0)이 반환됩니다.

흐린 원에 대해서는 QPainter::AntialiasingRenderHint 때문에 발생합니다. 귀하의 경우 renderHints을 사용하지 않으면 선명한 이미지를 보여줍니다. 아래는 순수한 붉은 색 (PNG 형식)과 날카로운 모서리 (RenderHints가 아닌)로 이미지를 볼 수 있습니다. 가장 희미한 접근 방식은 QPainter::Antialiasing을 사용하므로 샤프니스를 이미지하려는 경우 피해야합니다. 필요에 따라 QPainter::HighQualityAntialiasingRenderHint을 시도해 볼 수는 있지만 그 밖의 것은 없습니다.

+1

링크가 아닌 게시물의 일부로 이미지를 포함해야합니다. 모두에게 더 좋을 것입니다. – ray

+0

답장을 보내 주셔서 감사합니다. 앤티 엘리 어싱을 제거하고 형식을 PNG로 변경하여 흐림 효과를 개선했지만 부착 된 이미지만큼 명확하지는 않지만 여전히 약간 흐립니다. 이 이미지를 생성하는 데 사용한 코드를 표시하여 내 것과 비교할 수 있습니까? 주위를 놀고 난 후에, 펜 폭을 10으로 설정하는 약간의 이유 때문에 전체적으로 흐림을 제거하는 것처럼 보인다. – user193369

+0

무시해도 완벽하게 작동합니다! 나는 평소처럼 실수를 범했습니다. 많은 도움에 감사드립니다. – user193369