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 ...
随机推荐
- Hibernate二级缓存原理
缓存:缓存是什么,解决什么问题? 位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为缓存Cache.缓存目的:让数据更接近于应用程序,协调速度不匹配,使访问速度更快 ...
- 1232: [Usaco2008Nov]安慰奶牛cheer
1232: [Usaco2008Nov]安慰奶牛cheer Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 612 Solved: 431[Submi ...
- iOS UI控件总结(全)
1.UIButton UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; btn.frame = CGRectMake ...
- 多种语言开发Spark-以WordCount为例
Spark是目前最火爆的大数据计算框架,有赶超Hadoop MapReduce的趋势.因此,趁着现在还有大多数人不懂得Spark开发的,赶紧好好学习吧,为了使不同的开发人员能够很好的利用Spark,S ...
- RxJava 笔记
前言 目前 RxJava 是安卓开发圈内最流行的库之一,本来准备研究研究,但看了扔物线写的<给 Android 开发者的 RxJava 详解>后,觉得生无可恋,哦不,是觉得已经写无可写. ...
- css布局与盒子模型
一. 盒子模型 注: 1.红色为border; 2.背景应用于内容.内边距.边框组成的区域: 3.Width和height指的是内容区域的高度和宽度. 边框属性: 1. padding属性:( ...
- JavaScript 基础阶段测试题
JavaScript 基础阶段测试题,试试你能得多少分? 一.选择题1.分析下段代码输出结果是( ) var arr = [2,3,4,5,6]; var sum =0; for(v ...
- restful restAPI 的定义方式
今天听了一些rest 的讲解,感谢玖遥老大教导,晚上把整理出来,帮助那些和我一样有过迷茫的人! 我举的例子是经过我的老大讲解,以及观看阮一峰的restful架构的一些整合,和自己的拙劣见解. 首先:每 ...
- ASP.NET Core MVC 源码学习:MVC 启动流程详解
前言 在 上一篇 文章中,我们学习了 ASP.NET Core MVC 的路由模块,那么在本篇文章中,主要是对 ASP.NET Core MVC 启动流程的一个学习. ASP.NET Core 是新一 ...
- HTTP协议(四)
第一步:新建一个header.php页 <?php header('Location:http://www.baidu.com');//默认是302重定向 ?> 第二步:分析 如何制定重定 ...