整体处理:
无边框处理:
this->setWindowFlag(Qt::FramelessWindowHint);
插入背景图片
void PlayWindow::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
//背景图片
QPixmap pix;
pix.load(":/background.JPG");//背景图片相对路径
painter.drawPixmap(0,0,this->width(),this->height(),pix);
}
局部细节:
笔刷样式
Qt::NoBrush //不进行任何填充。
Qt::SolidPattern //纯色填充。
Qt::Dense1Pattern //使用1x1的点阵进行填充。
Qt::Dense2Pattern //使用2x2的点阵进行填充。
Qt::Dense3Pattern //使用3x3的点阵进行填充。
Qt::Dense4Pattern //使用4x4的点阵进行填充。
Qt::Dense5Pattern //使用5x5的点阵进行填充。
Qt::Dense6Pattern //使用6x6的点阵进行填充。
Qt::Dense7Pattern //使用7x7的点阵进行填充。
Qt::HorPattern //水平线型填充。
Qt::VerPattern //垂直线型填充。
Qt::CrossPattern //交叉线型填充。
自定义颜色
QColor customColor(255, 128, 0); // RGB颜色值
QBrush customBrush;
customBrush.setColor(customColor);
QPixmap(图像处理的类)用法:
QPixmap是Qt框架中用于处理图像的类,其主要用于绘图和在Qt应用程序中显示图像、图标以及背景。以下是对QPixmap用法的介绍:
-
加载与显示
- 使用构造函数加载图像:通过
QPixmap的构造函数直接传入图像路径,可以快速加载图像。 - 使用load()方法加载图像:创建
QPixmap对象后,调用load()方法并传入图像文件的路径来加载图像。 - 绘制图像到窗口:使用
QPainter类的实例,在窗口上绘制QPixmap对象,例如painter.drawPixmap(x, y, pixmap)可以将图像绘制到指定位置。
- 使用构造函数加载图像:通过
-
缩放与旋转
- 缩放图像:使用
scaled()函数可以对QPixmap进行缩放,例如pixmap = pixmap.scaled(width, height, Qt::KeepAspectRatio)保持宽高比的同时缩放大小。 - 旋转图像:利用
QPainter类的rotate()函数可以实现图像旋转,例如painter.rotate(90)将图像顺时针旋转90度。
- 缩放图像:使用
-
保存与转换
- 保存图像:可以使用
save()函数将QPixmap对象保存为图像文件,需要指定文件名及格式,如pixmap.save("output.png")。 - 像素级别操作:
QPixmap支持像素级别的访问和修改,可以通过遍历每一个像素并修改其颜色值来实现特定效果。 - 图像格式转换:
QPixmap可以与QImage相互转换,以利用QImage提供的更多图像处理功能。
- 保存图像:可以使用
-
性能优化
- 内存占用:当加载大图片时,
QPixmap会占用较大的内存。如果需要处理大尺寸的图像,可以先使用QImage加载,然后转换为QPixmap进行绘制,以减少内存消耗。 - 绘图优化:由于
QPixmap依赖于平台的绘图引擎,某些效果在不同平台上可能有所不同。开发者应根据目标平台优化图像显示效果。
- 内存占用:当加载大图片时,
此外,在使用QPixmap时,还需要注意以下几点:
- 当处理较大图像时,考虑使用
QImage进行中间处理以节省内存。 - 如果需要在图像上实现复杂的图形操作,结合使用
QPainter类可以提供更多的功能。 - 注意不同平台间可能存在的绘图差异,确保跨平台应用的一致性。
1110

被折叠的 条评论
为什么被折叠?



