Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 在qgraphicsitem中添加具有不同图像分辨率的图像轮廓_Qt_Qgraphicsitem - Fatal编程技术网

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

Qt 在qgraphicsitem中添加具有不同图像分辨率的图像轮廓,qt,qgraphicsitem,Qt,Qgraphicsitem,我试图在qgraphicsitem中用轮廓画一幅图像。这张图片将有不同的分辨率(640x380,1190*780,320*410),我必须画一个恒定的4px轮廓,不管图片的宽度和高度。我试图获取图像几何体的百分比,但对于不同大小的图像,轮廓会发生变化。对于更高的分辨率,它看起来很薄,对于较小的值,它看起来很细 QFont segoeFont("Segoe Regular"); segoeFont.setPointSize(10); painter->setFont(sego

我试图在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) ;
}

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

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


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

您发布的代码显示,您可以调用painter->setBrush,然后创建一支笔,但不要将笔设置为painter。另外,如果您返回图像的boundingRect+4px,我认为您需要调用painter->drawImage(QPoint(4,4),mePixmap);