QGraphicsScene图像位置像素图
QGraphicsScene image pos pixmap
我正在使用Qt图形框架来显示图像。我已经使用addPixmap()
在QGraphicsView
的子类QGraphicsScene
中打开了一个原始图像。我使用缩放功能添加了缩放功能,拖动模式设置为滚动手动拖动。现在,我需要在鼠标悬停时获得场景中的像素坐标,以便x和y值显示鼠标当前指向的图像(由像素图绘制(中的像素。我尝试使用pos()
,但没有成功。
这是来自Widget.cpp
:的代码
img = openImage(dirPath2.toLocal8Bit().data(),
sizeX,sizeY,file_heade,scan_heade,bpp,sign);
QPixmap x = QPixmap(sizeX,sizeY);
x.convertFromImage(img,Qt::AutoColor);
scene->addPixmap(x);
ui->disp_img->setDragMode(QGraphicsView::ScrollHandDrag);
GraphicsScene.h
:
class GraphicsScene : public QGraphicsScene {
public:
GraphicsScene(QWidget *parent) : QGraphicsScene(parent){}
};
(最好是像素图坐标,但即使这样也不会发生,如果缩放时值发生变化,我将使用比例因子来获得原始值(
我建议您从阅读Qt的图形坐标系开始。
坐标系有不同的层次,你需要考虑与之打交道的那些层次。顶层是屏幕(或视图(,它是鼠标坐标所在的位置。
视图中的下一层是图形场景。图形项目,例如您使用addPixmap添加的QGraphicsPixmapItem,位于此处。图形场景可以被可视化为一个项目的世界,每个项目都有自己的位置和方向。
移动到最后一个坐标系是项目的局部坐标系。例如,如果我们取一个矩形,它可能具有(x,y,w,h(的局部坐标(-5,-5,10,10(。然后将此项目放置在场景中的某个位置。如果其位置是场景的原点(0,0(,则项目的局部坐标将与其场景坐标读取相同。
然而,如果我们在x轴上移动矩形+5个单位,它的局部坐标是相同的,但它的场景坐标现在是(0,-5,10,10(。
同样,视图(QGraphicsScene(是一个进入场景的窗口,可以查看整个场景,也可以只查看其中的一部分。由于视图的左上角坐标为(0,0(,它可能映射到场景的(0,0
因此,通过获取鼠标位置,您可以从视图的坐标开始,并需要转换到场景的坐标系。幸运的是,Qt在各个级别都为此提供了许多有用的功能。
若要将鼠标坐标从视图转换到场景,可以使用视图的mapToScene功能。
使用场景坐标,您可以获得一个项目,并使用该项目的mapFromScene将其映射到该项目的本地坐标。
- 如何在不产生任何垃圾的情况下获得C中的像素
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 如何在24位SDL_Surface上设置像素的颜色
- 如何从SDL_Surface获取特定像素的颜色
- 如何将CMSampleBufferRef/CIImage/UIImage转换为像素,例如uint8_t[]
- 在C++中查找像素 RGB 数据的最快方法是什么?
- 是否可以从 OpenGL 缓冲区获取原始大小的像素?
- 他们如何将红外锁定像素转换为镜头前方 1m 的正常平面上的位置
- 使用GDAL在FAA部分上找到像素位置
- 具有特定颜色的像素不在 SFML 中放置的位置
- CIMG立方子像素位置
- 如何查找黑色像素位置
- C/C++LIBTIFF:需要从BW TIFF文件中读取白色和黑色像素的像素位置
- 我如何知道像素的位置与相机的相应位置(以厘米或毫米为单位)
- 将图像重新映射到不同大小并查找像素位置
- 获取投影图像像素位置
- OpenGL以像素为单位定义顶点位置
- QGraphicsScene图像位置像素图
- OpenGL ES-从相机位置获取2D像素坐标
- 裁剪具有定义的宽度、长度和像素位置的视频文件