网站推广.NET

网站推广.NET

c++如何显示图片

来源:互联网

如何在 C++ 中显示图像

在 C++ 中,有几种方法可以显示图像:

1. SDL (简单直接媒体层)

SDL 是一个跨平台库,支持在不同平台上显示图像:

立即学习“C++免费学习笔记(深入)”;

#include <sdl2>int main(int argc, char* argv[]) {  SDL_Init(SDL_INIT_EVERYTHING);  SDL_Surface* screen = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);  SDL_Surface* image = SDL_LoadBMP("image.bmp");  SDL_BlitSurface(image, NULL, screen, NULL);  SDL_UpdateWindowSurface(screen);  SDL_Delay(10000);  // 等待 10 秒  SDL_Quit();}</sdl2>

2. Qt

Qt 是另一个跨平台框架,可以通过 QWidget 类显示图像:

#include <qapplication>#include <qlabel>#include <qpixmap>int main(int argc, char* argv[]) {  QApplication app(argc, argv);  QLabel label;  label.setPixmap(QPixmap("image.png"));  label.show();  return app.exec();}</qpixmap></qlabel></qapplication>

3. OpenCV (开放式计算机视觉库)

OpenCV 专注于图像处理和计算机视觉,提供显示图像的函数:

#include <opencv2>int main(int argc, char* argv[]) {  cv::Mat image = cv::imread("image.jpg");  cv::imshow("Image", image);  cv::waitKey(0);  // 等待用户输入  return 0;}</opencv2>

4. Win32 API

在 Windows 系统中,可以使用 Win32 API 来显示图像:

#include <windows.h>int main(int argc, char* argv[]) {  BITMAP bitmap;  BITMAPINFO bitmapInfo;  ZeroMemory(&amp;bitmapInfo, sizeof(bitmapInfo));  bitmapInfo.bmiHeader.biSize = sizeof(bitmapInfo);  bitmapInfo.bmiHeader.biWidth = 640;  bitmapInfo.bmiHeader.biHeight = 480;  bitmapInfo.bmiHeader.biPlanes = 1;  bitmapInfo.bmiHeader.biBitCount = 32;  void* bits;  HDC hdc = GetDC(NULL);  HBITMAP hbitmap = CreateDIBSection(hdc, &amp;bitmapInfo, DIB_RGB_COLORS, &amp;bits, NULL, 0);  HDC hdcMem = CreateCompatibleDC(hdc);  HGDIOBJ oldObj = SelectObject(hdcMem, hbitmap);  HBITMAP hbitmapImage = (HBITMAP)LoadImage(NULL, "image.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);  HDC hdcImage = CreateCompatibleDC(hdc);  HGDIOBJ oldObjImage = SelectObject(hdcImage, hbitmapImage);  BitBlt(hdcMem, 0, 0, 640, 480, hdcImage, 0, 0, SRCCOPY);  SelectObject(hdcMem, oldObj);  SelectObject(hdcImage, oldObjImage);  DeleteObject(hbitmapImage);  DeleteObject(hdcImage);  DeleteDC(hdcMem);  ReleaseDC(NULL, hdc);  DeleteObject(hbitmap);  return 0;}</windows.h>

选择哪种方法取决于具体情况和应用程序的要求。

标签: releasedc