2014-04-04 49 views
0

我試圖用qgraphicsitem中的輪廓繪製圖像。此圖像將具有不同的分辨率(640x380,1190 * 780,320 * 410),我必須繪製恆定的4px輪廓,而不考慮圖像的寬度和高度。我試圖採取圖像幾何的百分比,但對於不同大小的圖像輪廓正在改變。對於更高的分辨率,它看起來很薄,而對於較小的價值細線。在不同圖像分辨率下爲qgraphicsitem中的圖像添加輪廓

QFont segoeFont("Segoe Regular"); 
    segoeFont.setPointSize(10); 
    painter->setFont(segoeFont); 
    painter->setRenderHints(QPainter::TextAntialiasing); 
    painter->setBrush(QColor(69,69,69)); 
    if(meIsSelected) 
    { 
     painter->setBrush(QColor(65, 167, 243)); 
     QPen pen(QColor(65, 167, 243), 2); 
     pen.setCosmetic(true); 
    } 

    painter->drawRect (this->boundingRect()); 
    painter->drawImage (QPoint(0,0), mePixmap); 

和我boundingRect()

回報mePixmap.rect().adjusted(-4,-4,4,4);

這個項目顯示爲視圖與fitInview

void GraphicsView::resizeEvent(QResizeEvent *event) 
{ 
    QGraphicsView::resizeEvent(event); 
    fitInView(this->scene()->sceneRect(),Qt::KeepAspectRatio) ; 
} 

回答

1

如果你需要一個恆定4PX外形和屏幕分辨率是變化的,你看到的是正確的。

4px的輪廓自然會看起來更小,分辨率更高。理論上,如果分辨率僅爲4像素寬,則會佔用整個屏幕寬度,但是如果分辨率爲8像素,則4像素線將覆蓋屏幕的一半。在這兩種情況下,輪廓仍然是4px。

如果您的屏幕分辨率相同,並且圖像分辨率正在改變,那麼您需要顯示代碼以說明如何渲染輪廓。

+0

我使用我的代碼編輯了我的帖子.. – Wagmare

+0

您發佈的代碼顯示您調用painter-> setBrush,然後創建一支筆,但不要將該筆設置爲畫家。另外,如果你在圖像周圍返回image + 4px的boundingRect,我會認爲你需要調用painter-> drawImage(QPoint(4,4),mePixmap); – TheDarkKnight