DirectFB实例1--加载一幅图片
在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--加载一幅图片相关推荐
- Caffe2教程实例,加载预训练模型
Caffe2教程实例,加载预训练模型 概述 本教程使用模型库中的预训练模型squeezenet 里分类我们自己的图片.我们需要提供要分类图片的路径或者URL信息作为输入.了解ImageNet对象代码可 ...
- UIWebView / NSURL / NSBoundle 相关应用 (实例,加载完成前的背景, 默认safari打开链接地址等)...
UIWebView可以让你创建一个网页浏览器,类似safari,而不是在程序中启动safsri哦.是不是觉得很棒呢?废话少说,切入正题. 一.创建UIWebView CGRect bouds = [[ ...
- AJAX实例演示加载xml
前言 先前在入门AJAX这篇文章中,简单描述了AJAX一些基础.其实这里也是基础的使用,通过这个例子在结合之前学习的方法再好好理解运用一番. 实例 html <html> <head ...
- google离线地图实例,加载本地地图瓦片, 支持点线面及图文标注,坐标定位,卫星、电子地图切换
说明: 1.无偏移坐标定位: 2.可以自由搭配点线面配置信息(颜色.粗细.透明度等): 3.地图级别自定义: 4.中心点自定义: 5.ajax提交通过php保存到mysql数据库(保存相应的标注信息, ...
- OpenCV加载图像列表imagelist的实例(附完整代码)
OpenCV加载图像列表imagelist的实例 OpenCV加载图像列表imagelist的实例 OpenCV加载图像列表imagelist的实例 #include "opencv2/im ...
- java中静态变量,静态代码块,静态方法,实例变量,匿名代码块的加载顺序
1. java中静态变量,静态代码块,静态方法,实例变量,匿名代码块 在Java中,使用{}括起来的代码称为代码块,代码块可以分为以下四种: (1)普通代码块:就是类中方法的方法体 public vo ...
- 【翻译】WF从入门到精通(第六章):加载和卸载实例
上一篇:[翻译]WF从入门到精通(第五章):workflow跟踪 学习完本章,你将掌握: 1.理解工作流实例为什么要卸载和重新加载及其时机 2.理解工作流实例为什么要持久化及其时机 ...
- java 整合hadoop_Spark 如何摆脱java双亲委托机制优先从用户jar加载类?
1. 起源 spark的类加载及参数传递过程还是很复杂的,主要是因为他运行环境太复杂了,不同的集群管理器完全不一样,即使是同一集群管理器cluster和client也不一样,再加上这块探究还是需要一定 ...
- Spring Boot 学习系列(09)—自定义Bean的顺序加载
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Bean 的顺序加载 有些场景中,我们希望编写的Bean能够按照指定的顺序进行加载.比如,有UserServ ...
最新文章
- vim查找关键字_VIM学习笔记 对话框(Dialog)
- 检查电脑是否被安装木马三个小命令
- golang编译工具LiteIDE的调试使用方法(F5)
- 默写测试晋级流程 1126
- 课程 2B: 制作一款交互性应用
- Symfony 2.0 认识Request, Response, Session, Cookie
- 分享一款TF/SD卡手机存储卡格式化修复工具
- SecureCRT 中文(附上1.解决SecureCRT乱码问题2.解决Hostname lookup failed: host not found问题)
- java多态 -- 猫狗案列
- roundcube mysql_Webmail Roundcube安装配置
- win10系统激活提示无法连接到你组织的激活服务器如何解决
- 一个IT从业者的课外读物___养生锻炼篇
- XMU毕业生总结写paper常用网站
- word如何弄成两竖列_word分栏后成了竖行
- 微信朋友圈内测版-无视权限
- 生命中最美的风景就是曾经遇见了你
- 印度舞曲吉米来吧(中文版)铃声 印度舞曲吉米来吧(中文版)手机...
- 临近毕业,图像类SCI源刊哪本审稿快?
- 麻省理工学院计算机系硕士课程,麻省理工学院计算机专业研究生申请 你听说过《算法导论吗》?...
- mysql 索引 美团_美团面试官:说说MySQL的索引