0
点赞
收藏
分享

微信扫一扫

二十八、Qt之关于绘画模块的理解

minute_5 2022-06-21 阅读 54

要理解Qt的绘画模块,核心就是理解Qt的坐标系统:

  • 视口坐标、视图坐标
  • 窗口坐标、场景坐标
    二十八、Qt之关于绘画模块的理解_初始化

视口坐标

视口坐标,又可以叫做物理坐标,又或者视图坐标,表示绘图设备的任意一个矩形区域的物理坐标,可以只选取物理坐标的一个矩形区域用于绘图。默认情况下,视口等于绘图设备的整个矩形区域。

窗口坐标

窗口坐标,又可以叫做逻辑坐标,又或者场景坐标,它的坐标系是以绘图设备的中心为原点,构建坐标系。

窗口坐标优点

只需要按照窗口坐标定义来绘图,而不用管实际的物理坐标范围的大小,也就是屏幕自适应。

案例:

绘图如下:
二十八、Qt之关于绘画模块的理解_坐标系统_02代码如下:

/**
* 这里的视图就是 QGraphicsView 组件
*/
void MyMainWindow::iniGraphicsSystem()
{
//场景区域
QRectF rect(-200, -100, 400, 200);
//初始化场景
scene = new QGraphicsScene(rect);
//为视图组件设置场景
ui->graphicsView->setScene(scene);

//绘制矩形
QGraphicsRectItem* item = new QGraphicsRectItem(rect);
item->setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsFocusable);
QPen pen;
pen.setWidth(2);
item->setPen(pen);
scene->addItem(item);

//绘制蓝色椭圆(圆心默认就是场景的原点)
QGraphicsEllipseItem* item2 = new QGraphicsEllipseItem(-100, -50, 200, 100);
item2->setPos(0, 0);
item2->setBrush(QBrush(Qt::blue));
item2->setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsFocusable
| QGraphicsItem::ItemIsMovable);
scene->addItem(item2);

//绘制红色椭圆
item2 = new QGraphicsEllipseItem(-50, -50, 100, 100);
//设置圆心位置,覆盖默认位置
item2->setPos(rect.right(), rect.bottom());
item2->setBrush(QBrush(Qt::red));
item2->setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsFocusable
| QGraphicsItem::ItemIsMovable);
scene->addItem(item2);

scene->clearSelection();
}


举报

相关推荐

0 条评论