DJYGUI系列文章六:GK程序示例

   

目录

1 程序调用步骤

2 参考代码


        DJYGUI的GK编程比较简单,以下是一个简单的程序示例。

1 程序调用步骤

GK初始化步骤流程如下:

  1. 初始化GK,即内核初始化,调用初始化函数ModuleInstall_GK;
  2. 显示器安装,将当前显示器安装到图形系统。
  3. 安装字符集,创建桌面和窗口,绘图。

2 参考代码

下面以天嵌开发板TQ2440举例,说明GK图形化编程。

GK图形内核的初始化对用户而言,相对简单,大部分工作已经由内核完成,用户只需调用函数ModuleInstall_GK即可。如所示,初始化内核后,调用函数ModuleInstall_Lcd实现安装名为“lcd_2440”的显示器,返回显示器指针,然后创建了显示器的桌面,并安装字符集。如代码 51所示。

代码 2-1 GK初始化

    ModuleInstall_GK(0);

    lcd_2440 = (struct tagDisplayRsc*)ModuleInstall_Lcd((ptu32_t)"lcd_2440");

    GK_ApiCreateDesktop(lcd_2440,&desktop,0,0,

                        CN_COLOR_RED+CN_COLOR_GREEN,CN_WINBUF_BUF,0,0);

   Gk_Gb2312EncodeModuleInit(0);

函数ModuleInstall_Lcd完成的功能是初始化LCD硬件,并调用函数GK_InstallDisplay实现显示器安装。硬件初始化和显示器安装代码如代码 2-2所示。

代码 2-2 显示器初始化

ptu32_t ModuleInstall_Lcd(ptu32_t para)

{

static struct tagGkWinRsc frame_win;

static struct tagRectBitmap frame_bm;

    __lcd_hard_init();

    __lcd_power_enable(0,1);

    __lcd_envid_of(1);    

    frame_bm.PixelFormat = cn_lcd_pf;

    frame_bm.width = cn_lcd_xsize;

    frame_bm.height = cn_lcd_ysize;

    frame_bm.linebytes = cn_lcd_xsize*2;

    frame_bm.bm_bits = (u8*)pg_frame_buffer;

    frame_win.wm_bitmap =&frame_bm;

    tg_lcd_display.frame_buffer = &frame_win;

    tg_lcd_display.xmm = 0;

    tg_lcd_display.ymm = 0;

    tg_lcd_display.width = cn_lcd_xsize;

    tg_lcd_display.height = cn_lcd_ysize;

    tg_lcd_display.pixel_format = CN_SYS_PF_RGB565;

    tg_lcd_display.reset_clip = false;

    tg_lcd_display.framebuf_direct = false;

    //无须初始化frame_buffer和desktop,z_topmost三个成员

    tg_lcd_display.draw.set_pixel_bm = __lcd_set_pixel_bm;

    tg_lcd_display.draw.fill_rect_bm = __lcd_fill_rect_bm;

    tg_lcd_display.draw.get_pixel_bm = __lcd_get_pixel_bm;

    tg_lcd_display.draw.line_bm = __lcd_line_bm;

    tg_lcd_display.draw.line_bm_ie = __lcd_line_bm_ie;

    tg_lcd_display.draw.blt_bm_to_bm = __lcd_blt_bm_to_bm;

    tg_lcd_display.draw.get_rect_bm = __lcd_get_rect_bm;

    tg_lcd_display.draw.set_pixel_screen = __lcd_set_pixel_screen;

    tg_lcd_display.draw.line_screen = __lcd_line_screen;

    tg_lcd_display.draw.line_screen_ie = __lcd_line_screen_ie;

    tg_lcd_display.draw.fill_rect_screen = __lcd_fill_rect_screen;

    tg_lcd_display.draw.bm_to_screen = __lcd_bm_to_screen;

    tg_lcd_display.draw.get_pixel_screen = __lcd_get_pixel_screen;

    tg_lcd_display.draw.get_rect_screen = __lcd_get_rect_screen;

    

    tg_lcd_display.DisplayHeap =  M_FindHeap("display");

    tg_lcd_display.disp_ctrl = __lcd_disp_ctrl;

    if(GK_InstallDisplay(&tg_lcd_display,(char*)para))

        return (ptu32_t)&tg_lcd_display;

    else

        return (ptu32_t)NULL;      

}

完成了GK初始化和显示器安装后,创建了第一个桌面后,便就可以实现绘图操作。如代码 2-1所示,实现在桌面上创建窗口,并输出“Hello World!”文本到新创建的窗口。

代码 2-3 GK应用示例

struct tagGkWinRsc desktop,win1;

desk = GK_ApiGetDesktop(lcd_2440);

if(GK_ ApiCreateGkwin (desktop,win1,20,20,200,200,CN_COLOR_RED,

CN_WINBUF_BUF,WIN1,CN_SYS_PF_DISPLAY,0,0,0);

{

    GK_ApiDrawText(win1,40,80,Hello World!,13,CN_COLOR_BLACK,0,0);

}

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值