2012-03-19 64 views
1

我用QPainter畫出我的插件,此代碼:爲什麼我的線寬在QGraphicsScene中看起來與QPen寬度相同?

QPen pen(Qt::black, 0.6, Qt::SolidLine); 
QPainter painter(this); 
painter.setPen(pen); 

// vertical 
painter.drawLine(startX,0,startX,50); 
painter.drawLine((startX += grid),0,startX,50); 
painter.drawLine((startX += grid),0,startX,50); 
painter.drawLine((startX += grid),0,startX,50); 
painter.drawLine((startX += grid),0,startX,50); 
painter.drawLine((startX += grid),0,startX,50); 

// horizontal 
pen.setWidth(0.7); 
painter.setPen(pen); 
painter.drawLine(0,grid*2,70,grid*2); 
painter.drawLine(0,grid*4,70,grid*4); 
painter.drawLine(0,grid*6,70,grid*6); 
painter.drawLine(0,grid*8,70,grid*8); 

當我加入這個項目成爲QGraphicsScene,線的寬度有時看起來彼此不同,特別是當我放大任何人都可以解釋爲什麼會發生這種情況以及可以採取哪些措施來解決問題?

該屏幕截圖演示了此問題:

enter image description here

+0

感謝您的編輯,@Arnold Spence – nils 2012-03-19 21:42:04

回答

2

這是浮點舍入和場景插值/渲染的副作用。在大多數縮放級別下,從場景像素到像素點不會有完美的一對一匹配。對於小數筆寬度尤其如此。你可以讓事情看起來有點更爲順暢你QGraphicsView開啓抗鋸齒:

... 
view.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); 
.... 

other rendering hints可以在傳遞也是如此。

+0

非常感謝,它看起來好多了。線的邊緣不那麼尖銳,有點模糊。我的問題也出現在QGraphicsPixelItem中,圖片的質量下降了很多,有時線條消失了,有時會變得更寬,如果有解決方案嗎?正如你所知道的,當你使用圖片瀏覽器來縮放圖片時,你不會觀察到這種行爲。 – nils 2012-03-19 22:37:07

+0

如果你的意思是'QGraphicsPixmapItem',那麼也有一個渲染提示。我已將它添加到上面的答案中。 – 2012-03-19 22:50:07

相關問題