gui_buffer = getcurrguibuffer(scr_id_***x);
//設定視窗不帶狀態列
entry_full_screen();
//開啟多層
gdi_layer_multi_layer_enable();
buf_ptr = med_alloc_ext_mem(gdi_lcd_width*gdi_lcd_height*2);
if (buf_ptr == null)
gdi_layer_create_using_outside_memory(
0,0,
ui_device_width,
ui_device_height,
&my_layer1,
(pu8) buf_ptr,
(s32) gdi_lcd_width*gdi_lcd_height*2);
//啟用新層1
gdi_layer_set_active(my_layer1);
//把背景全刷成紅色
gdi_layer_clear_background(gdi_color_red);
//設定紅色為通透色
gdi_layer_set_source_key(true, gdi_color_red);
gdi_image_draw_id(50, 100, img_id_phoart_icon_6);
//建立層2,使用系統提供的直接建立函式從層記憶體直接建立
gdi_layer_create(0, 0, ui_device_width, ui_device_height, &my_layer2);
//啟用新層2
gdi_layer_set_active(my_layer2);
gdi_layer_clear_background(gdi_color_transparent);//刷色
gdi_layer_set_source_key(true, gdi_color_transparent);//設定通透
//在層2上輸出字串
gui_move_text_cursor(50, 200);
gui_print_bordered_text(l"hellow word");
//在最後要啟用基層
gdi_layer_get_base_handle(&my_base_layer);
gdi_layer_set_active(my_layer1);
//得到當前活動層的通透屬性
gdi_layer_get_source_key(&isenable, &base_color);
//設定通透
gdi_layer_set_source_key(true, base_color);
//指定合併層,注意疊加的順序
gdi_layer_set_blt_layer(my_base_layer, my_layer1, my_layer2, 0);
//重新整理到螢幕上
gdi_layer_blt_previous(0, 0, ui_device_width - 1, ui_device_height - 1);
}有關gdi_layer_create函式再說明一點,如果你通過這個函式建立的層大小比螢幕小,倒是可以建立多個的,但你所建立的層大小的總和,不能超過螢幕大小
還有一點需要注意的是,如果程式執行在**上,最好使用malloc和free替換med_alloc_ext_mem和med_free_ext_mem,也就是寫成
#ifdef win32
malloc
#else
med_alloc_ext_mem
#endif
和#ifdef win32
free
#else
med_free_ext_mem
#endif
MTK層的運用
有關gdi layer create函式再說明一點,如果你通過這個函式建立的層大小比螢幕小,倒是可以建立多個的,但你所建立的層大小的總和,不能超過螢幕大小 還有一點需要注意的是,如果程式執行在 上,最好使用malloc和free替換med alloc ext mem和med free ext mem...
MTK層的運用
有關gdi layer create函式再說明一點,如果你通過這個函式建立的層大小比螢幕小,倒是可以建立多個的,但你所建立的層大小的總和,不能超過螢幕大小 還有一點需要注意的是,如果程式執行在 上,最好使用malloc和free替換med alloc ext mem和med free ext mem...
MTK特效製作的方法,層複製
對於mtk平台來說,選單和螢幕特效曾經在很長的一段時間裡,影響甚遠。但對於其設計過程和方法,由於各種各樣的原因,很少有人提及。這裡介紹一種不同於前幾天日誌所載之方法的另一種方法,就是合併圖層,其核心實現函式如下。void my gdi layer copy gdi layer struct dst ...