QGraphicsView杂记

记录些自己用到的。

场景类(QGraphicsScene类):放置图元的容器,本身不可见。

视图类(QGraphicsView类):可视的窗口,用于显示场景中的图元。

图元类(QGraphicsItem类):各个图元的基类。直线(QGraphicsLineItem)、椭圆(QGraphicsEllipseItem)、文本(QGraphicsTextItem)、矩形(QGraphicsRectItem)、图像(QGraphicsPixmapItem)。

 

【保存scene中缩放后的图】

scale虽然可以缩放(scene与所有item一起缩放),但不会改变scene及其上的item的尺寸

view->scale(2.0,2.0);

setScale才会改变item及scene的尺寸,若要所有item一起缩放需对每个item设置。

pixmapItem=scene->addPixmap(QPixmap::fromImage(qImg));
m_nFactor=2*m_nFactor;       //放大2倍
pixmapItem->setScale(m_nFactor);

QPixmap pix(scene->width(), scene->height());
QPainter painter(&pix);
scene->render(&painter);
pix.save("D:/scene.bmp");

【保存view中的图,不带滚动条】

//先隐藏滚动条
view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
QPixmap viewPix=view->grab();
view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
viewPix.save("D:/view.bmp");

 

【QGraphicsLineItem的位置】

在图像的第1行画水平绿色线,宽度为1时占1行像素,为2时占2行像素,为3时占3行像素。

下图中红线是QPen的起始和终止位置,绿色才是QPen画出的带宽度的线。

QPen pen;
pen.setColor(Qt::green);        //绿色
//pen.setStyle(Qt::DashDotLine);  //虚线
int penWidth=1;    
QGraphicsLineItem* hLineItem1=scene->addLine(0+penWidth/2.0,0+penWidth/2.0,7-penWidth/2.0,0+penWidth/2.0);
pen.setWidth(penWidth);
hLineItem1->setPen(pen);
penWidth=2;    
QGraphicsLineItem* hLineItem2=scene->addLine(0+penWidth/2.0,5+penWidth/2.0,7-penWidth/2.0,5+penWidth/2.0);
pen.setWidth(penWidth);
hLineItem2->setPen(pen);
penWidth=3;
QGraphicsLineItem* hLineItem3=scene->addLine(0+penWidth/2.0,10+penWidth/2.0,7-penWidth/2.0,10+penWidth/2.0);
pen.setWidth(penWidth);
hLineItem3->setPen(pen);

 

【参考的高质量博客】

第68课 基础图形绘制(下) - 浅墨浓香 - 博客园 (cnblogs.com)

posted @ 2023-11-17 15:06  夕西行  阅读(46)  评论(0编辑  收藏  举报