QGraphicsScene和QGraphicsView座標系統

Graphics View中有三個座標系統,即場景座標、視圖座標、圖形項座標。

場景座標

場景座標等價於QPainter的邏輯座標,一般以場景中心爲原點;視圖座標與設備座標相同,是物理座標,默認爲左上角爲原點;圖形項的座標是局部邏輯座標,一般以圖形項的中心爲原點。

一個圖形項的位置是其中心點在父座標中的座標,對於沒有父圖形項的圖形項,其父對象就是場景,圖形項的位置就是在場景中的座標。如果一個圖形項還是其他圖形項的父項,那麼父項進行座標轉換的時候,子項也做同樣的座標轉換。

視圖座標

視圖座標就是窗口界面的物理座標,單位是像素。視圖座標只與widget或視口有關,而與觀察的場景無關,左上角座標爲(0,0)

場景座標

場景是所有圖形項的基礎座標,場景座標描述了每個頂層圖形項的位置,創建場景時可以定義矩形區域的座標範圍。

_scene = new QGraphicsScene(-100, -100, 200, 200);

這樣就定義了一個左上角座標爲(-100,-100)寬度爲200,高度爲200 的矩形區域,單位是像素

QGraphicsView是用於觀察一個場景的物理窗口,當場景小於視圖時,整個場景在視圖中可見;當場景大於視圖時,視圖自動提供滾條。

示例代碼:

	ui.graphicsView->setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
	_scene = new QGraphicsScene(-100, -100, 200, 200);
	ui.graphicsView->setScene(_scene);

	QPen pen;
	pen.setWidth(2);
	pen.setColor(QColor(255, 0, 0));
	
	_scene->setBackgroundBrush(QBrush(Qt::gray));

	_scene->addLine(-100, 0, 100, 0, pen);
	_scene->addLine(0, -100, 0, 100, pen);
	_scene->addEllipse(-25, -25, 50, 50, pen);

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章