当前位置: 首页 > news >正文

网站改中文郑州网站建设 58

网站改中文,郑州网站建设 58,网站建设要考,好看的html网页前言 SDL中内置加载BMP的API,使用起来会更加简单,便于初学者学习使用SDL 如果需要加载JPG、PNG等其他格式的图片,可以使用第三方库:SDL_image 测试环境: ffmpeg的4.3.2自行编译版本windows环境qt5.12sdl2.0.22&…

前言

SDL中内置加载BMP的API,使用起来会更加简单,便于初学者学习使用SDL

如果需要加载JPG、PNG等其他格式的图片,可以使用第三方库:SDL_image


测试环境:

  • ffmpeg的4.3.2自行编译版本
  • windows环境
  • qt5.12
  • sdl2.0.22(mingw编译器)

完整代码:

SdlShowBmpThread.h

#ifndef SDLSHOWBMPTHREAD_H
#define SDLSHOWBMPTHREAD_H#include <QObject>
#include <QThread>class SdlShowBmpThread : public QThread
{Q_OBJECT
public:explicit SdlShowBmpThread(QObject *parent = nullptr);~SdlShowBmpThread();signals:// QThread interface
protected:virtual void run() override;
};#endif // SDLSHOWBMPTHREAD_H

SdlShowBmpThread.cpp

#include "sdlshowbmpthread.h"#include <QDebug>
#include <SDL2/SDL.h>#define END(judge, func) \if (judge) { \qDebug() << #func << "error" << SDL_GetError(); \goto end; \}SdlShowBmpThread::SdlShowBmpThread(QObject *parent) : QThread(parent)
{// 当监听到线程结束时(finished),就调用deleteLater回收内存connect(this,&SdlShowBmpThread::finished,this,[=](){this->deleteLater();qDebug()<<"SdlPlayWavThread线程结束";});
}SdlShowBmpThread::~SdlShowBmpThread()
{// 断开所有的连接disconnect();// 内存回收之前,正常结束线程requestInterruption();// 安全退出quit();wait();qDebug() << this << "析构(内存被回收)";
}void SdlShowBmpThread::run()
{// 像素数据SDL_Surface *surface = nullptr;// 窗口SDL_Window *window = nullptr;// 渲染上下文SDL_Renderer *renderer = nullptr;// 纹理(直接跟特定驱动程序相关的像素数据)SDL_Texture *texture = nullptr;// 矩形框SDL_Rect srcRect = {0, 0, 1928, 1048};  //源图片从0,0坐标截取1928*1048尺寸大小的图片SDL_Rect dstRect = {0, 0, 1928, 1048};  //目标图片在0,0左边显示1928*1048大小的图片SDL_Rect rect;// 初始化子系统END(SDL_Init(SDL_INIT_VIDEO), SDL_Init);// 加载BMPsurface = SDL_LoadBMP("E:/media/picture-test.bmp");END(!surface, SDL_LoadBMP);// 创建窗口window = SDL_CreateWindow(// 标题"SDL显示BMP图片",// xSDL_WINDOWPOS_UNDEFINED,// ySDL_WINDOWPOS_UNDEFINED,// wsurface->w,// hsurface->h,SDL_WINDOW_SHOWN);END(!window, SDL_CreateWindow);// 创建渲染上下文renderer = SDL_CreateRenderer(window, -1,SDL_RENDERER_ACCELERATED |SDL_RENDERER_PRESENTVSYNC);if (!renderer) {renderer = SDL_CreateRenderer(window, -1, 0);END(!renderer, SDL_CreateRenderer);}// 创建纹理texture = SDL_CreateTextureFromSurface(renderer, surface);END(!texture, SDL_CreateTextureFromSurface);// 画一个红色的矩形框END(SDL_SetRenderDrawColor(renderer,255, 0, 0, SDL_ALPHA_OPAQUE),SDL_SetRenderDrawColor);rect = {0, 0, 50, 50};END(SDL_RenderFillRect(renderer, &rect),SDL_RenderFillRect);// 设置绘制颜色(画笔颜色)END(SDL_SetRenderDrawColor(renderer,255, 255, 0, SDL_ALPHA_OPAQUE),SDL_SetRenderDrawColor);// 用绘制颜色(画笔颜色)清除渲染目标END(SDL_RenderClear(renderer),SDL_RenderClear);// 拷贝纹理数据到渲染目标(默认是window)END(SDL_RenderCopy(renderer, texture, &srcRect, &dstRect),SDL_RenderCopy);// 更新所有的渲染操作到屏幕上SDL_RenderPresent(renderer);SDL_Delay(2000);end:SDL_FreeSurface(surface);SDL_DestroyTexture(texture);SDL_DestroyRenderer(renderer);SDL_DestroyWindow(window);SDL_Quit();
}

线程调用:

void MainWindow::on_pushButton_sdl_show_bmp_clicked()
{m_pSdlShowBmpThread=new SdlShowBmpThread(this);m_pSdlShowBmpThread->start();
}

注意:.h文件中提前声明了以下全局变量

	SdlShowBmpThread *m_pSdlShowBmpThread=nullptr;

注意:本文为个人记录,新手照搬可能会出现各种问题,请谨慎使用


码字不易,如果这篇博客对你有帮助,麻烦点赞收藏,非常感谢!有不对的地方

http://www.yayakq.cn/news/875992/

相关文章:

  • 做自媒体网站深圳住房建设局官方网站
  • 网站网站二维码收钱怎么做的哪里有专业网站建设公司
  • 企业网站建设方案 功能规划中国化学工程第九建设公司网站
  • 自助建站会出现什么问题网站新闻前置备案
  • 宁波网站建设论坛手机网页链接制作生成
  • 如何成为网站开发工程师现在网站都是拿什么软件做的
  • 网站开发常见模块做电脑网站起什么名字
  • 做一个网站先做前段 还是后端asp医院网站源码
  • 广东住房和城乡建设厅网站电子邮箱怎么申请
  • 抖音网站怎么做大渡口集团网站建设
  • 建设银行网站怎么短信转账太原建设厅官方网站
  • 凡科网域名续费手机网络优化软件
  • 网站闭站网站建设专业总结
  • 深度网网站建设方案中国商标注册申请官网
  • 申请免费的个人网站配音网站赚钱
  • 做网站编写代码在深圳做网站平台需要什么备案
  • 重庆中小企业建站价格iis7 无法添加网站
  • 语言网站建设企业网站建设的作用
  • 做个淘宝客网站怎么做wordpress中国最好主题
  • 班级网站建设心得体会范文站长资源平台百度
  • 给客户建设网站税率工厂订单外发代加工外发加工网
  • 陕西省住房和城乡建设厅综合网站关于建设网站的报告
  • 超大免费网站空间小程序视频网站开发
  • 无货源一键铺货软件企业网站优化推广方法
  • 网站集约化建设工作打算购物手机网站建设
  • 广告型网站怎么做湛江海田网站建设招聘
  • 官网的网站建设公司wordpress 存档
  • 西安建网站公司深圳品牌网站建设公司招聘
  • 中国化学工程第六建设公司网站宝安网站建设推广
  • 自己做网站创业北京中兴时代网站建设