forked from aromadev/libaroma
-
Notifications
You must be signed in to change notification settings - Fork 0
ctl_button
Ever-Never edited this page Jul 9, 2018
·
1 revision
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 ;
}