2013-07-18 40 views
5

Tôi đã triển khai lại QGraphicsView để cảnh được thu phóng bằng sự kiện bánh xe chuột. Cảnh có chứa một số QGraphicsPixmapItem. Sự kiện bánh xe gọi QGraphicsView :: scale (qreal sx, qreal sy)Chống răng cưa không hoạt động trong QGraphicsView

Mọi thứ hoạt động hoàn hảo nhưng hiển thị. Khi tôi thu nhỏ (cảnh trở nên nhỏ hơn), răng cưa xuất hiện. Tôi cố gắng thiết lập render gợi ý như sau trong việc tái triển khai QGraphicsView constructor:

ImageViewer::ImageViewer(QWidget * parent) : 
    QGraphicsView(parent) 
{ 
    setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform | QPainter::HighQualityAntialiasing); 
} 

tôi vẫn nhìn thấy những đồ tạo tác. Làm thế nào tôi có thể thoát khỏi điều này ?

+0

Bạn có thể đăng ảnh chụp màn hình về những gì đang xảy ra không? Bạn có đặt bất kỳ chiến lược bộ nhớ đệm nào trên các mục không? – peppe

+0

Cảm ơn bạn @peppe! Tôi không thiết lập bất cứ điều gì về bộ nhớ đệm, vì vậy tôi đoán nó là mặc định. Dưới đây là ví dụ về giao diện của nó [trước] (https://lh6.googleusercontent.com/-e2pH06jhy94/Ue09l8A1SWI/AAAAAAAAY08/YGa-wj9ollY/w958-h599-no/Fullscreen+capture+7222013+100003+AM.jpg) (Tỷ lệ 1: 1 pixel) và [sau] (https://lh4.googleusercontent.com/-PZJVX0jl6yw/Ue09mo_Iu2I/AAAAAAAAY1E/nMf28uA9MlE/w958-h599-no/Fullscreen+capture+7222013+100007+AM.jpg) (tỷ lệ nhỏ hơn 1: 1) thu nhỏ. Bạn sẽ thấy một số bí danh trong các vòng tròn đồng tâm. – Algo

Trả lời

3

Vui lòng xem nhận xét của tôi về this question.

Về cơ bản, bạn phải gọi số setTransformationMode(Qt::SmoothTransformation) trên số QGraphicsItem mà bạn muốn chống răng cưa để áp dụng.

Gọi setRenderHints trên chế độ xem cũng không hoạt động đối với tôi.

+0

Vì vậy, không có cách nào để có một nền chống răng cưa? Edit: Nm là một lỗi trong mã của tôi. – Timmmm

Các vấn đề liên quan