DirectFB学习笔记二
本篇目的,画一个方框,在方框上画一串字符。
实现步骤:首先创建IDirectFB接口,通过它再创建要显示的表面surface,同时创建字体font,绘制字符必须要设置绘制的字体,否则绘制不成功。然后清理窗口,将整个surface填充为黑色,最后绘制方框和字符。
#include<stdio.h>
#include<unistd.h>
#include<directfb.h>
static IDirectFB *dfb = NULL;
static IDirectFBSurface *primary = NULL;
static int screen_width = 0;
static int screen_height = 0;
#define DFBCHECK(x...) \
{ \
DFBResult err = x; \
\
if(err != DFB_OK) \
{ \
fprintf(stderr,"%s<%d>:\n\t",__FILE__,__LINE__); \
DirectFBErrorFatal(#x,err); \
} \
}
int main(int argc,char **argv)
{
DFBSurfaceDescription dsc;//创建surface时需要的描述符
DFBFontDescription font_dsc;//创建字体font时需要的描述符
IDirectFBFont *font = NULL;//字体
DFBCHECK(DirectFBInit(&argc,&argv));
DFBCHECK(DirectFBCreate(&dfb));//创建总的接口
DFBCHECK(dfb->SetCooperativeLevel(dfb,DFSCL_FULLSCREEN));
dsc.flags = DSDESC_CAPS;
dsc.caps = DSCAPS_PRIMARY|DSCAPS_FLIPPING;
DFBCHECK(dfb->CreateSurface(dfb,&dsc,&primary));创建surface
DFBCHECK(primary->GetSize(primary,&screen_width,&screen_height));//获取屏幕的高宽
DFBCHECK(primary->SetColor(primary,0x0,0x0,0x0,0xff));//设置画笔的颜色,每次绘制前都需要设置,否则将采用默认的或者上次设置的颜色
DFBCHECK(primary->FillRectangle(primary,0,0,screen_width,screen_height));//填充整个surface平面
DFBCHECK(primary->SetColor(primary,0x80,0x80,0xff,0xff));//设置画笔颜色
DFBCHECK(primary->DrawRectangle(primary,0,0,screen_width/3,
screen_height/3));//画一个坐上角在(0,0),宽为屏幕宽的1/3,高为屏幕高的1/3
font_dsc.flags = DFDESC_HEIGHT;
font_dsc.height = 50;
DFBCHECK(dfb->CreateFont(dfb,"./decker.ttf",&font_dsc,&font));//创建字体
DFBCHECK(primary->SetFont(primary,font));//设置字体,和画笔一样,每次绘制字符前都要设置
DFBCHECK(primary->DrawString(primary,"hello world",-1,screen_width/6,
screen_height/6,DSTF_CENTER));//绘制中心为(screen_width/6,screen_height/6)的字符串
DFBCHECK(primary->Flip(primary,NULL,DSFLIP_NONE));将缓冲区的图画(即上面填充的以及绘制的方框和字符串)显示出来
sleep(5);//挂起5秒,否则会秒退,看不到效果
font->Release(font);
primary->Release(primary);
dfb->Release(dfb);
return 0;
}
DirectFB学习笔记二的更多相关文章
- WPF的Binding学习笔记(二)
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...
- AJax 学习笔记二(onreadystatechange的作用)
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
- JMX学习笔记(二)-Notification
Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ...
- java之jvm学习笔记二(类装载器的体系结构)
java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...
- Java IO学习笔记二
Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...
- 《SQL必知必会》学习笔记二)
<SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...
- NumPy学习笔记 二
NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(二) indigo tools
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
随机推荐
- 基于 Koa平台Node.js开发的KoaHub.js的静态服务器重写和索引代码
koa-static-server Static file serving middleware for koa with directory, rewrite and index support k ...
- 1687: [Usaco2005 Open]Navigating the City 城市交通
1687: [Usaco2005 Open]Navigating the City 城市交通 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 94 Sol ...
- osprofiler在openstack Cinder里的使用
最近在做OpenStack Cinder driver的性能调试, 之前一直是通过在driver里面加入decorator,完成driver各个接口的执行时间的统计. 其实在openstack,已经在 ...
- Java 中的数组
1.声明数组String [] arr;int arr1[];String[] array=new String[5];int score[]=new int[3]; 2.初始化数组://静态初始化i ...
- String及其常用API
String 类代表字符串.Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现. 字符串是常量:它们的值在创建之后不能更改.字符串缓冲区支持可变的字符串.因 ...
- iPhone 设置铃声
每次设置后,长时间不玩就忘记了,把写成博客:好记性不如烂笔头: 第一步:下载喜欢的音乐: 第二步,通过iTunes 文件 下的资料库 导入刚才下载的歌曲: 第三步:截取喜欢的部分,铃声最好设置在30秒 ...
- Map集合概述和特点
A:Map集合概述和特点(Set底层依赖的是Map) 将键映射到值的对象 一个映射不能包含重复的键 每个键最多只能映射到一个值 B:Map接口和Collection接口的不同 Map是双列的(是双列集 ...
- Docker remote API简单配置使用
1.启动docker remote API的方式如下: docker -d -H uninx:///var/run/docker.sock -H tcp://0.0.0.0:5678 2.但是为了伴随 ...
- TFS发布计划发送到钉钉消息群
由于工作中需要用到钉钉,每天都要和钉钉打交道:上下班打卡.出差请假流程.各种工作讨论组,不一而足,工作已然和钉钉绑在了一起,难怪有广告词: 微信是一个生活方式,钉钉是一个工作方式. 我们是钉钉机器人内 ...
- Windows运行命令大全
inetmgr 启动IIS控制台winver 检查Windows版本 wmimgmt.msc 打开Windows管理体系结构(wmi) wupdmgr Windows更新程序 wscript Wi ...