使用MFC在C++中实现JPG和bitmap图片显示教程

版权申诉
0 下载量 178 浏览量 更新于2024-10-30 收藏 4.43MB ZIP 举报
特别是对于JPG格式的图片和bitmap这两种常见的图像格式,它们广泛应用于Windows应用的界面设计中。本资源将详细介绍如何在MFC应用程序中显示JPG图片和bitmap图片。 首先,要显示JPG图片,开发人员通常需要使用到MFC提供的GDI(图形设备接口)以及第三方图像库,比如Gdiplus.lib或者第三方图像处理库。C++作为编程语言,在这个过程中扮演着核心角色,负责编写代码逻辑和实现功能。 MFC中显示JPG图片可以采用以下几种方法: 1. 使用GDI+库: - 首先,在项目中包含Gdiplus.lib库,并确保已经包含对应的头文件Gdiplus.h。 - 在代码中初始化GDI+,通过调用GdiplusStartup()函数进行初始化,同时需要在程序结束时调用GdiplusShutdown()进行清理。 - 加载JPG文件,可以使用Image类的Load()方法来加载图片。 - 通过Graphics类创建图形对象,并使用DrawImage()方法将图片绘制到指定的设备上下文中。 2. 使用第三方图像处理库: - 选择合适的第三方图像处理库(如OpenCV等),并按照库的说明将其集成到MFC项目中。 - 利用第三方库提供的接口读取和显示JPG图片。 对于bitmap图片的显示,则相对简单: - 在MFC中,可以使用CBitmap类来操作和显示bitmap图片。 - 首先,通过CBitmap类加载bitmap资源,可以使用LoadBitmap()方法来加载位图资源。 - 然后,创建一个内存设备上下文(CDC)对象,并使用CBitmap的Attach()方法将位图与设备上下文关联。 - 最后,使用CDC对象的BitBlt()函数将位图绘制到窗口的客户区或任何其他设备上下文中。 需要注意的是,在设计和开发过程中,还需注意如下几点: - 图片显示效果与设备分辨率相关,可能需要进行适当的缩放和居中处理。 - 图片资源在应用程序中占用内存,应根据实际需要合理管理图片资源,避免内存泄漏。 - 图片的加载与显示可能涉及到跨线程访问问题,需要确保在主线程中进行UI操作以避免线程安全问题。 以上内容将为MFC开发者提供在Windows桌面应用中嵌入和显示JPG图片和bitmap图片的方法和思路,帮助开发人员更好地实现用户界面的美化和功能增强。"

import sys import os import time from PyQt5 import QtGui #重新导入 from PyQt5 import QtCore #重新导入 from showPic import Ui_MainWindow from PyQt5.QtCore import * from PyQt5.QtGui import * #导入的外面 from PyQt5.QtWidgets import * import cv2 # 方法二 class picShow(QMainWindow, Ui_MainWindow): def __init__(self): super().__init__() self.setupUi(self) # 方法一 # self.picMap = QtGui.QPixmap("img0.jpg") # self.label.setGeometry(QtCore.QRect(40, 40, 960, 560)) # 修改大小 # self.label.setPixmap(self.picMap) # 方法二(常用) self.n = 0 self.timer = QTimer(self) # 创建QT计时器 self.timer.timeout.connect(self.timer_pic) # 链接计时器触发函数 self.timer.start(1000) # 设置轮播间隔,里面单位是毫秒 self.dir_path = r"E:\pycharm\new_subject\image/" # r用来确保斜杠转义问题,最后的/一定要带上 self.file_list = os.listdir(self.dir_path) # print(file_list) def timer_pic(self): self.n += 1 # 调用函数实现自增 if self.n >= len(self.file_list): # 回退索引,轮播效果 self.n = 0 image_name = self.dir_path + self.file_list[self.n] url = image_name pic_image = cv2.imread(url) pic_image = cv2.cvtColor(pic_image, cv2.COLOR_BGR2RGB) # 将BGR格式图像转换成RGB height, width = pic_image.shape[:2] pixMap = QImage(pic_image.data, width, height, width*3, QImage.Format_RGB888) # 将RGB格式图像转换为八位图 pixMap = QPixmap.fromImage(pixMap) ratio = max(width/self.label.width(), height/self.label.height()) pixMap.setDevicePixelRatio(ratio) # 根据图片比例显示 self.label.setAlignment(Qt.AlignCenter) # 设置居中 self.label.setPixmap(pixMap) if __name__ == '__main__': app = QApplication(sys.argv) ui = picShow() ui.show() sys.exit(app.exec_())每一行是什么意思?

210 浏览量