在DirectFB中加载一幅图片,并显示:

1. 通过IDirectFBImageProvider加载一幅图片.

2. 创建一个DirectFBSurface,并将图片数据放入其中.

3. 将该Surface的内容Blit到主Surface, 以更进行显示.

下面用代码解释上述三个步骤.

在执行上述步骤前,首先得进行上下文初始化,对于DirectFB程序来说,这些初始化步骤是一样的.

DFBResult ret;//初始化DirectFBret = DirectFBInit(&argc, &argv);if (ret != DFB_OK) {cout<<"初始化DirectFB失败!"<<endl;return -1;}DirectFBCreate(&dfb);dfb->SetCooperativeLevel (dfb, DFSCL_NORMAL);//设置屏幕模式dfb->SetVideoMode(dfb, SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP);

然后创建一个主Surface :

dsc.flags = DSDESC_CAPS;dsc.caps = (DFBSurfaceCapabilities)(DSCAPS_PRIMARY | DSCAPS_FLIPPING);dfb->CreateSurface(dfb, &dsc, &screen);

接下来是加载图片:

//加载图片ret = dfb->CreateImageProvider (dfb, IMGDIR"/helloworld.png", &img_provider);if (ret != DFB_OK) {cout<<"加载图片失败!"<<endl;return -1;}

然后根据ImageProvider提供的描述信息,量身创建一个匹配的Surface.

img_provider->GetSurfaceDescription(img_provider, &dsc);dfb->CreateSurface(dfb, &dsc, &hello);img_provider->RenderTo(img_provider, hello, NULL);img_provider->Release(img_provider);

最后,将图片数据复制到主Surface上,

//将图片应用到屏幕上screen->Blit(screen, hello, NULL, 0, 0);

对于双Buffer的主Surface,需要通过以下调用 才用在屏幕上看到输出:

//更新屏幕screen->Flip (screen, NULL, DSFLIP_WAITFORSYNC);

设置Color Key, 一般用于去掉背景色

static void apply_surface(int x, int y, IDirectFBSurface *source, IDirectFBSurface *destination){destination->SetBlittingFlags(destination, DSBLIT_SRC_COLORKEY );source->SetSrcColorKey(source, 0x0, 0xFF, 0xFF);
//        destination->DisableAcceleration(destination, DFXL_BLIT);destination->Blit(destination, source, NULL, x, y);}

转载于:https://my.oschina.net/fuyajun1983cn/blog/263943

DirectFB实例1--加载一幅图片相关推荐

  1. Caffe2教程实例,加载预训练模型

    Caffe2教程实例,加载预训练模型 概述 本教程使用模型库中的预训练模型squeezenet 里分类我们自己的图片.我们需要提供要分类图片的路径或者URL信息作为输入.了解ImageNet对象代码可 ...

  2. UIWebView / NSURL / NSBoundle 相关应用 (实例,加载完成前的背景, 默认safari打开链接地址等)...

    UIWebView可以让你创建一个网页浏览器,类似safari,而不是在程序中启动safsri哦.是不是觉得很棒呢?废话少说,切入正题. 一.创建UIWebView CGRect bouds = [[ ...

  3. AJAX实例演示加载xml

    前言 先前在入门AJAX这篇文章中,简单描述了AJAX一些基础.其实这里也是基础的使用,通过这个例子在结合之前学习的方法再好好理解运用一番. 实例 html <html> <head ...

  4. google离线地图实例,加载本地地图瓦片, 支持点线面及图文标注,坐标定位,卫星、电子地图切换

    说明: 1.无偏移坐标定位: 2.可以自由搭配点线面配置信息(颜色.粗细.透明度等): 3.地图级别自定义: 4.中心点自定义: 5.ajax提交通过php保存到mysql数据库(保存相应的标注信息, ...

  5. OpenCV加载图像列表imagelist的实例(附完整代码)

    OpenCV加载图像列表imagelist的实例 OpenCV加载图像列表imagelist的实例 OpenCV加载图像列表imagelist的实例 #include "opencv2/im ...

  6. java中静态变量,静态代码块,静态方法,实例变量,匿名代码块的加载顺序

    1. java中静态变量,静态代码块,静态方法,实例变量,匿名代码块 在Java中,使用{}括起来的代码称为代码块,代码块可以分为以下四种: (1)普通代码块:就是类中方法的方法体 public vo ...

  7. 【翻译】WF从入门到精通(第六章):加载和卸载实例

    上一篇:[翻译]WF从入门到精通(第五章):workflow跟踪 学习完本章,你将掌握:     1.理解工作流实例为什么要卸载和重新加载及其时机     2.理解工作流实例为什么要持久化及其时机   ...

  8. java 整合hadoop_Spark 如何摆脱java双亲委托机制优先从用户jar加载类?

    1. 起源 spark的类加载及参数传递过程还是很复杂的,主要是因为他运行环境太复杂了,不同的集群管理器完全不一样,即使是同一集群管理器cluster和client也不一样,再加上这块探究还是需要一定 ...

  9. Spring Boot 学习系列(09)—自定义Bean的顺序加载

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Bean 的顺序加载 有些场景中,我们希望编写的Bean能够按照指定的顺序进行加载.比如,有UserServ ...

最新文章

  1. vim查找关键字_VIM学习笔记 对话框(Dialog)
  2. 检查电脑是否被安装木马三个小命令
  3. golang编译工具LiteIDE的调试使用方法(F5)
  4. 默写测试晋级流程 1126
  5. 课程 2B: 制作一款交互性应用
  6. Symfony 2.0 认识Request, Response, Session, Cookie
  7. 分享一款TF/SD卡手机存储卡格式化修复工具
  8. SecureCRT 中文(附上1.解决SecureCRT乱码问题2.解决Hostname lookup failed: host not found问题)
  9. java多态 -- 猫狗案列
  10. roundcube mysql_Webmail Roundcube安装配置
  11. win10系统激活提示无法连接到你组织的激活服务器如何解决
  12. 一个IT从业者的课外读物___养生锻炼篇
  13. XMU毕业生总结写paper常用网站
  14. word如何弄成两竖列_word分栏后成了竖行
  15. 微信朋友圈内测版-无视权限
  16. 生命中最美的风景就是曾经遇见了你
  17. 印度舞曲吉米来吧(中文版)铃声 印度舞曲吉米来吧(中文版)手机...
  18. 临近毕业,图像类SCI源刊哪本审稿快?
  19. 麻省理工学院计算机系硕士课程,麻省理工学院计算机专业研究生申请 你听说过《算法导论吗》?...
  20. mysql 索引 美团_美团面试官:说说MySQL的索引

热门文章

  1. JS调用PageMethods(转)
  2. Linux/Unix环境下的make和makefile详解
  3. Linux 之 Kickstart
  4. 【题解】 SP5973 SELTEAM - Selecting Teams
  5. UOJ#272. 【清华集训2016】石家庄的工人阶级队伍比较坚强
  6. SQL查询所有客人的第一次用餐时间
  7. Cowboy 源码分析(一)
  8. 复杂问题需要系统思维
  9. cpu使用时间百分比过高 排查
  10. linux 结构体 struct addrinfo 简介