DirectFB教程导读-在屏幕中心画一条横线

#include

//C库函数

#include

//UNIX标准函数,与系统相关

 

#include

//directfb库函数

 

static IDirectFB *dfb = NULL;

//directfb入口,最高接口

static IDirectFBSurface *primary = NULL;

//平面接口对象,若CooerativeLevel设为DFSCL_FULLSCREEN,则为首层平面

 

static int screen_width = 0;

static int screen_height = 0;

//设置两个静态常量来记录屏幕的长宽信息,初始化为0,以适应任何界面

 

int main(int argc, char **argv)

{

DFBSurfaceDescription *dsc;

//创建DFBSurface描述对象

DirectFBInit(&argc, &argv);

//初始化Directfb,初始化函数的实参为argcargv的地址,

//*argc, ***argv(*(*argv[]))

//此函数可使argcargv参数在directfb中使用。

DirectFBCreate(&dfb);

//创建最高接口,给dfb对象分配了一段内存空间

dfb->SetCooperativeLevel(dfb, DFSCL_FULLSCREEN);

//dfbCooperativeLevel设置为DFSCL_FULLSCREEN

//这样我们所绘的图形将独占显示在显示设备的最上层(primary layer)

//否则只能显示在大鼠标的下方

dsc->flags = DSDESC_CAPS;

//指定要设置的区域,这里为DSDESC_CAPS,则可对caps区域进行设置。有唤醒之意。

dsc->caps = DSCAPS_PRIMARY | DSCAPS_FLIPPING;

//caps设置为以上两个参数,DSCAPS_PRIMARY即将dfb设为最高层,

//DSCAPS_FLIPPING参数将其设为要见,此参数在1.0.1版本中是没有的

dfb->CreateSurface(dfb, dsc, &primary);

//利用dsc创建一个 平面,此平面的信息放在primary

primary->GetSize(primary, &screen_width, &screen_height);

//获取screen_widthscreen_height的值,即全屏的长和宽

printf("%d/t%d/n", screen_width, screen_height);

//测试行,查看此获得的长宽值

primary->FillRectangle(primary, 0, 0, screen_width-1, screen_height-1);

//将一个矩形将屏幕覆盖起来,以矩形的左上角和右下角坐标为实参

//默认这个矩形的颜色为黑色,绘制参数为DSDRAW_NOFX,即无特效

primary->SetColor(primary, 0x80, 0x80, 0xff, 0xff);

//设置画笔颜色,从第二个参数起分别为r,g,b,aaalpha(透明)值

primary->DrawLine(primary, 0, screen_height/2,

screen_width-1, screen_height/2);

//画一条直线,以起点和终点坐标为实参

primary->Flip(primary, NULL, 0);

//绘制完成后别忘了FLIP一下,让绘制的内容可见

sleep(5);

//暂停5

return 0;

}

你可能感兴趣的:(DFB)