
QPixmap 、 QImage 、 QPicture 都是 QPaintDevice 的子类。
QPixmap 的设计本来就是用来加速显示,用 paint 绘图时用 QPixmap 会比其他类的效果好很多。一般小用 QPixmap 。
QPixmap 也可以接受一个字符串作为一个文件的路径来显示这个文件,比如你想在程序之中打开 BMP、GIF、JPG、JPEG、PNG 等文件,就可以使用 QPixmap 。使用 QPainter 的 drawPixmap() 函数可以把这个文件绘制到一个 QLabel 、 QPushButton 或者其他的设备上面。 QPixmap 是针对屏幕进行特殊优化的,因此,它与实际的底层显示设备息息相关。注意,这里说的显示设备并不是硬件,而是 *** 作系统提供的原生的绘图引擎。所以,在不同的 *** 作系统平台下, QPixmap 的显示可能会有所差别。 QPixmap 提供了静态的 grabWidget() 和 grabWindow() 函数,用于将自身图像绘制到目标上。同时,在使用 QPixmap 时,你可以直接使用传值也不需要传指针,因为 QPixmap 提供了“隐式数据共享”,即传递 QPixmap 不必须使用指针。
更多参考: QPixmap
QBitmap 继承自 QPixmap ,因此具有 QPixmap 的所有特性。 QBitmap 的色深始终为 1 色深这个概念来自计算机图形学,是指用于表现颜色的二进制的位数。我们知道,计算机里面的数据都是使用二进制表示的。为了表示一种颜色,我们也会使用二进制。比如我们要表示8种颜色,需要用 3 个二进制位,这时我们就说色深是 3 因此,所谓色深为 1,也就是使用 1 个二进制位表示颜色。1 个位只有两种状态:0 和 1,因此它所表示的颜色就有两种,黑和白。所以说, QBitmap 实际上是只有黑白两色的图像数据。由于 QBitmap 色深小,因此只占用很少的存储空间,所以适合制作游标( QCursor )或者笔刷( QBrush )。
既然依赖软件,那么就不需要用硬件 GUI 的线程了,可以开个软件的线程,可提高用户 UI 体验。
例子:
QImage 使用 Qt 自身的绘图引擎,可提供在不同平台上相同的图像呈现效果,并可通过 pixel() 、 setPixpel() 等方法直接存取和修改指定的像素。
QPicture 是一个绘画设备类,它记录了并可以重演 QPainter 的命令。你可以使用 QPainter 的 begin() 方法,指定在 QPicture 上绘图,使用 end() 方法结束绘图,使用 QPicture 的 save() 方法将 QPainter 所使用过的绘图指令存至档案。要重播绘图指令的话,建立一个 QPicture ,使用 load() 方法载入绘图指令的档案,然后在指定的绘图装置上绘制 QPicture 。
记录绘制的图形:
接着便可在您的绘图设备重画已经保存的图形:
更多参考: QPicture¶
QPixmap 跟硬件是相关的,如 X11, Mac 以及 Symbian 平台上, QPixmap 是存储在服务器端,而 QImage 则是存储在客户端,在 Windows 平台上, QPixmap 和 QImage 都是存储在客户端,并不使用任何的GDI资源。
在 X11, Mac 以及 Symbian 平台上,因为 QImage 是存储在客户端,往 QImage 上绘图比较快,但显示它则比较慢。因为 QPixmap 是存储在服务器端,往 QPixmap 上绘图比较慢,但显示它则比较快。但在 Windows 平台上则是是一样的,因为它们都存储在客户端。
QImage 是设计并优化来为 I/O *** 作的,可以直接访问和 *** 作像素,而 QPixmap 是设计并优化来在屏幕上显示的。 QBitmap 仅是继承自 QPixmap 的一个方便使用的类,是为了确保的深度为1。 QPicture 是绘图设备,可以用来重现 QPainter 命令。
Step1>
CMake OpenCV,使用CMake生成OpenCV库的makefile文件,需要注意的是解压出来的OpenCV存储路径中的文件夹不要带有空格或者中文(我的是E:\OpenCV,不
要用类似于E:\工程\opencv, E:\Open
CV这种),打开CMake,指定源码位置(就是OpenCV解压出来的地方)和存放生成文件的地方,Configured出如图对话框,选择MinGW Makefiles和Specify native compilers
跳出对话框用以指定C++和C的编译器路径,C用gccexe,在QtSDK目录下的mingw/bin子目录中,C++用g++exe:
然后再次Configure,无错误后选中WITH_QT
再次Configure会出现下图信息提示找不到Qt的Qmake可执行文件
手动指定Qmakeexe所在目录(在\QtSDK\Desktop\Qt\474\mingw\bin下面):
再次Configure,无错误后 Generate。
Step2>
编译
1> Cmd命令 转到Generate到的目录(我的是如上图所示的E:\opencv\MinGW)
>> cd E:\opencv\MinGW
2> Cmd命令 编译文件
>> mingw32-make
3> Cmd命令 编译INSTALL
>> mingw32-make install
过程如图:
Step3>
在存放Generate生成的目录下有一个install目录,
编译好的所有结果都在这里啦,包括bin,lib和include,把bin目录放到环境变量path中,其实可以把整个install目录拷贝到某个地
方使用,这样就可以把opencv目录里面的内容全删了,省的占空间。我就把install里面的内容全都搬到了E盘下的OpenCVforQt目录下了
(00)。
Example:
在用QtCreator和OpenCV的时候,修改用到opencv的工程的pro文件就可以了,添加include和lib,例如:
QT += core gui
TARGET = Win_OpenCV_Test
TEMPLATE = app
INCLUDEPATH += E:\OpenCVforQt\include
INCLUDEPATH += E:\OpenCVforQt\include\opencv
INCLUDEPATH += E:\OpenCVforQt\include\opencv2
LIBS += E:\OpenCVforQt\lib\libopencv_core231dlla
LIBS += E:\OpenCVforQt\lib\libopencv_highgui231dlla
LIBS += E:\OpenCVforQt\lib\libopencv_imgproc231dlla
SOURCES += maincpp
一个例子:
Code Snippet
#include <QtGui/QApplication>
#include <QtGui/QMessageBox>
#include <cvh>
#include <highguih>
using namespace cv;
int main(int argc, char argv[])
{
QApplication app(argc, argv);
Mat giraffe = imread("f:/giraffejpg");
if(giraffeempty())
{
QMessageBox::warning(0, "Warn", "Empty image!", QMessageBox::Ok);
}
else
{
imshow("giraffe [press any key to exit]", giraffe);
waitKey();
}
return 0;
}
需要先设定才能链接。
1、无线投屏功能。我们打开功能列表,选择连接。
2、点击连接后,win10能够启动搜索功能,搜索所处环境下的无线投影支持设备。
3、此外,我们还可以点击投影。
4、可以发现,除了投影的四种形式外,这里也有搜索无线投影设备的按钮。
5、主要介绍一下四种投影方式,第一种和第四种,分别是只显示电脑或者只显示屏幕,很好理解。另外两种,一种是复制,一种是扩展。复制是电脑和屏幕显示的完全一致,扩展则是屏幕在电脑屏幕之外,你的鼠标可以在两个屏幕之间移动。如下图所示。
6、除此以外,我们还可以通过其他方式连接设备,比如蓝牙,但是蓝牙连接投影的方式确实少见。
以上就是关于QT 三大绘图类:QPixmap/QImage/QPicture全部的内容,包括:QT 三大绘图类:QPixmap/QImage/QPicture、如何在qt中使用opencv,还请过来人指教、电脑无线投屏“无法连接你的设备”等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)