在qgraphicsitem中添加不同图像分辨率的图像轮廓

时间:2014-04-04 09:03:30

标签: qt qgraphicsitem

我试图在qgraphicsitem中绘制带有轮廓的图像。此图像将具有不同的分辨率(640x380,1190 * 780,320 * 410),我必须绘制一个恒定的4px轮廓,而不管图像的宽度和高度。我试图获取图像几何的百分比,但对于不同大小的图像,轮廓正在改变。对于更高的分辨率,它看起来很薄,对于较小的细线。

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 个答案:

答案 0 :(得分:1)

如果你需要一个恒定的4px轮廓并且屏幕分辨率正在改变,你所看到的是正确的。

4px轮廓将自然看起来更小,分辨率更高。从理论上讲,如果分辨率仅为4像素宽,则会占据屏幕的整个宽度,但是对于8px宽的分辨率,4px线仅覆盖屏幕的一半。在这两种情况下,轮廓仍然是4px。

如果您的屏幕分辨率相同而且只是图像分辨率正在发生变化,那么您需要显示您尝试渲染轮廓的代码。