关于blit的理解(ok):
void QScreen::blit ( const QImage & image, const QPoint & topLeft, const QRegion & region ) [virtual]
官方文档:
Copies the given region in the given image to the point specified by topLeft using device coordinates.
意思是把image中的region(矩形列表)区域内容,拷贝到设备坐标中的点topLeft上面。
但是,通过打印代码的log,发现,这样理解容易有误,
有一个例子如下:
在blit中,
const QVector<QRect> rects = region.rects();
for (int i = 0; i < rects.size(); ++i) {
painter.drawImage( rects.at(i), image, QRect(rects.at(i).topLeft()-topLeft, rect
s.at(i).size()) );
}
这里,意思是把image中的所有region块(rects[i]),绘制到设备的rects[i]上面。
rects[i]的左上角坐标是相对于设备的,
topLeft是image相对于设备的左上角,
根据函数drawImage的意思,需要把rects[i]转化为相对于image的坐标,所以要减去topLeft。
综上所述,image包含了region中的许多或者一个矩形块,topLeft是image的左上角相对于设备的坐标。目前的理解就是这样。
另外,image的image.rect()的左上角永远是0,0。因为image本身就没有rect的意义。
分享到:
相关推荐
在本Qt案例中,我们探讨了如何利用QScreen类来实现截屏操作。QScreen是Qt框架中的一个关键类,它代表了系统的一个显示设备,包括显示器和其他类型的输出设备。这个案例主要涉及到C++编程语言,Qt库以及UI设计,因此...
QT提供了一个名为`QScreen`的类,它是`QGuiApplication`的一部分,用于获取关于显示器的信息,如分辨率、刷新率等。以下是一些关键知识点: 1. **QScreen类**:这是QT提供的核心类,用于获取屏幕信息。你可以通过`...
在Qt 5中,可以利用`QScreen`类和`QGuiApplication::primaryScreen()`方法来获取屏幕信息,并通过设置`QScreen::orientation()`来改变屏幕方向。 6. **源程序实例**: 提供的源代码示例可能是如何在事件处理中监听...
可以使用`QScreen::grabWindow()`或`QScreen::grabGeometry()`方法从QScreen对象中抓取图像。 ```cpp QScreen *primaryScreen = QGuiApplication::primaryScreen(); QPixmap pixmap = primaryScreen->grabWindow...
在Qt编程中,获取屏幕分辨率是一项常见的需求,特别...通过阅读和理解这些代码,开发者可以更好地掌握在Qt环境中获取屏幕分辨率的方法。记得在实际项目中,根据实际需求进行适当的修改和优化,确保代码的可读性和效率。
通过调用QGuiApplication::primaryScreen()获取主屏幕对象,然后使用QScreen::grabWindow()或QScreen::grabGeometry()方法来捕捉窗口或屏幕的一部分。在这个软件中,可能使用了后者,因为可以截取指定的屏幕区域。 ...
然后,你可以调用QScreen::grabWindow()来截取指定窗口的图像。 4. **帧处理与编码**: - **OpenCV的Mat数据结构**:Mat是OpenCV中用于存储图像和视频帧的数据结构。获取到屏幕截图后,将其转换为Mat对象进行后续...
你可以通过`QGuiApplication::screens()`获取所有可用的屏幕,并通过`QScreen::grabWindow()`或`QScreen::grabGeometry()`方法来抓取屏幕图像。 3. **QImage**:Qt中的QImage类用于存储和处理图像数据。在截图后,...
然后,通过`QScreen::grabWindow()`或`QScreen::grabViewport()`方法捕获指定窗口或整个屏幕的图像。这些函数返回一个`QImage`对象,可以进一步处理或保存。 3. **图像处理**:`QImage`类提供了丰富的图像处理功能...
2. **屏幕抓取**: 在Qt中,可以使用QApplication::primaryScreen()获取主屏幕对象,然后调用QScreen::grabWindow()或QScreen::grabGeometry()方法捕获屏幕内容。前者用于截取指定窗口的图像,后者用于截取屏幕上的...
在QT5中,屏幕旋转是通过QScreen和QWindow类来实现的。QScreen是Qt图形视图框架的一部分,它代表了系统的一个物理屏幕。当设备需要旋转时,开发者需要修改QScreen的orientation属性。此外,QWindow类是应用程序的...
通过调用`QScreen::grabWindow()`,我们可以捕获屏幕上的任何窗口或整个桌面。例如: ```cpp QPixmap screenshot = QGuiApplication::primaryScreen()->grabWindow(0); ``` 3. **创建QGraphicsScene和QGraphics...
2. 获取屏幕图像:然后,调用`QScreen::grabWindow()`方法来抓取指定窗口(包括桌面)的图像,或者使用`QScreen::grabGeometry()`来抓取屏幕的一部分。 ```cpp QPixmap pixmap = screen->grabWindow(0); // 抓取...
在Qt框架中,屏幕截图是一项常见的功能,它允许开发者捕获和保存...以上就是关于Qt中实现屏幕截图的基本方法和扩展功能的介绍。通过理解这些API和技巧,开发者可以轻松地在Qt应用中集成屏幕截图功能,满足各种需求。
本压缩包中的资源聚焦于QT界面元素的设计与实现,提供了丰富的示例,帮助开发者提升在实际产品中应用QT技能的能力。以下是针对每个标签及描述中提及的QT知识点的详细说明: 1. **QT倒计时**:在QT中,倒计时功能...
这个压缩包包含了一系列的QT实例,涵盖了计算器、画图、闹钟、秒表、倒计时和截屏等功能,旨在帮助开发者更好地理解和学习QT的使用。 1. **QT计算器**: QT中的计算器实例展示了如何使用QT的图形用户界面(GUI)...
通过`QGuiApplication::primaryScreen()`,我们可以得到主屏幕对象,然后调用`QScreen::grabWindow()`方法来抓取指定窗口的图像,或者不传入参数抓取整个屏幕。这个方法返回一个`QPixmap`对象,它是Qt中的图像容器类...
在Qt中,我们可以利用QScreen类来获取系统的屏幕信息,然后使用QPixmap或QImage进行截图操作。以下是一个简单的截图示例: 1. 首先,获取屏幕对象: ```cpp QScreen *screen = QGuiApplication::primaryScreen(); `...
这通常通过`QGuiApplication::primaryScreen()`获取主屏幕对象,然后调用`QScreen::grabWindow()`方法完成。这个过程会返回一个`QPixmap`对象,它代表了屏幕上的静态图像。接下来,用户可以使用鼠标在屏幕上框选想要...
通过调用QApplication::primaryScreen()获取主屏幕,然后使用QScreen::grabWindow()方法可以截取指定窗口的图像。截图后的图片可以保存为各种格式,如JPEG、PNG等,通过QImage和QFile的配合实现。 【抓色功能】抓色...