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