Skip to content
Ever-Never edited this page Jul 9, 2018 · 1 revision

9.2 ctl_image

ctl_image相当于android的ImageView,可以显示图片,并且提供了设置画布的功能,所以我们使用image控件可以完成以下功能

a.显示一张图片

b.利用画布api绘制一些自定义图形,然后将画布设置给ctl_image;

提供的api包括:

1.创建ctl_image到window中

LIBAROMA_CONTROLP libaroma_ctl_image(
  LIBAROMA_WINDOWP win, word id, char * src,
  int x, int y, int w, int h
);
type para 注释
LIBAROMA_WINDOWP win 所要添加到的window
word id control的id
char * src 设置图片文件路径
x x control左上角x坐标(相对于window)
y y control左上角x坐标(相对于window)
w w control的宽度
h h control的高度

2.给ctl_image设置canvas

byte libaroma_ctl_image_set_canvas(
    LIBAROMA_CONTROLP ctl,LIBAROMA_CANVASP src,byte update);

3.创建一个带有canvas的ctl_image到window中

LIBAROMA_CONTROLP libaroma_ctl_image_canvas(
  LIBAROMA_WINDOWP win, word id, LIBAROMA_CANVASP src,
  int x, int y, int w, int h
);

4.设置是否显示

byte libaroma_ctl_image_hidden(
  LIBAROMA_CONTROLP ctl,byte hidden);

  /*
  hidden: 0代表show,1代表hidden
  */

显示一张图片的例子

LIBAROMA_WINDOWP create_image_window(voidp event_data)
{

    /*  new window */
    LIBAROMA_WINDOWP win = libaroma_window(NULL, 0, 0, LIBAROMA_SIZE_FULL,
        LIBAROMA_SIZE_FULL); 

    /*
    create ctl_image and add to window
    */
    LIBAROMA_CONTROLP image = libaroma_ctl_image(win, 1, NULL, 50, 20, libaroma_px(80), libaroma_px(80));

    /*
    read stream from memory
    */
    LIBAROMA_STREAMP stream = libaroma_stream_mem((bytep)res_get(RES_INDEX_NOTICE_WECHAT), res_get_length(RES_INDEX_NOTICE_WECHAT));

    /*
    get canvas by stream
    */
    LIBAROMA_CANVASP canvas = libaroma_image_ex(stream, 1, 0);

    /*
    fill canvas to ctl_image
    */
    libaroma_ctl_image_set_canvas(image, canvas, 1);

    return  win ;

}

显示一些自定义的图形的例子

LIBAROMA_WINDOWP create_image_window(voidp event_data)
{

    /* new window */
    LIBAROMA_WINDOWP win = libaroma_window(NULL, 0, 0, LIBAROMA_SIZE_FULL,
            LIBAROMA_SIZE_FULL); 

    /*
        create ctl_image and add to window
        */
    LIBAROMA_CONTROLP imagedef = libaroma_ctl_image(win, 2, NULL, 50, 120, libaroma_px(100), libaroma_px(50));

    /*
    new canvas
    */
    LIBAROMA_CANVASP canvast = libaroma_canvas_new_ex(100,50,0,0,NULL);

    /*
    canvas set background color
    */
    libaroma_canvas_setcolor(canvast,RGB(0000FF),0xFF);

    /*
    draw a rectangle on the canvas
    */
    libaroma_draw_rect(canvast,10,10,libaroma_px(30),libaroma_px(15),RGB(00FFFF),0xFF);

    /*
    draw a px on the canvas
    */
    libaroma_draw_pixel(canvast,70,25,RGB(FF0000),0xFF);

    /*
    fill canvas to ctl_image
    */
    libaroma_ctl_image_set_canvas(imagedef, canvast, 1);


      return  win ;
}
Clone this wiki locally