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 ...
随机推荐
- 一步到位分布式开发Zookeeper实现集群管理
说到分布式开发Zookeeper是必须了解和掌握的,分布式消息服务kafka .hbase 到hadoop等分布式大数据处理都会用到Zookeeper,所以在此将Zookeeper作为基础来讲解. Z ...
- (5)java中的常用API,其实就是一些常见类的使用
String方法来介绍 两种声明: 1.String str="1";这种首先检查常量池中是否已经有该常量字符串"1" 如果有的话,不会创建新的常量字符串,若有 ...
- Android开发之音乐播放器
做了一天的音乐播放器小项目,已经上传到github,将链接发到这里供大家参阅提议 https://github.com/wangpeng0531/MusicPlayer.git
- WebX框架学习笔记之二----框架搭建及请求的发起和处理
框架搭建 执行环境:windows.maven 执行步骤: 1.新建一个目录,例如:D:\workspace.注意在盘符目录下是无法执行成功的. 2.执行如下命令: mvn archetype:gen ...
- JS页面打开方式丶对话框及页面跳转方式
一.js页面的三种打开方式 1. window.open 2. window.navigate("url") 跳转到目标页面 3. window.location.href=&qu ...
- ELK整体方案
# ELK日志搜集平台解决方案---------1. 硬件设备2. 系统环境3. elasticsearch 集群部署4. kibana 部署5. logstash 部署6. filebeat 部署7 ...
- 机器学习:Python实现单层Rosenblatt感知器
如果对Rosenblatt感知器不了解,可以先查看下相关定义,然后对照下面的代码来理解. 代码中详细解释了各步骤的含义,有些涉及到了数学公式的解释. 这篇文章是以理解Rosenblatt感知器的原理为 ...
- css简单实现火焰效果
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- ajax 实现修改功能
这段时间在做项目,发现自己忘得好快呀,幸亏有博客园帮我记着呢,整理博客园简直不要太重要了哦 因为做的是一个内部管理系统,只用了一个主页面,所有的都不允许整个网页刷新,所以我们只能用ajax 来做,当 ...
- 20155237 2016-2017-2 《Java程序设计》第5周学习总结
20155237 2016-2017-2 <Java程序设计>第5周学习总结 教材学习内容总结 语法与继承架构 使用try...catch 与C语言中程序流程和错误处理混在一起不同,Jav ...