Опубликован: 22.12.2015 | Доступ: свободный | Студентов: 312 / 99 | Длительность: 14:40:00
Лекция 20:

Изображение квадрата на холсте

< Лекция 19 || Лекция 20 || Лекция 21 >
Ключевые слова: Canvas, API, контейнер, Grid, OBJ, объект, rectangle, int

Создание холста и рисование квадрата

Для рисования фигур на экране вы должны использовать холст (canvas). Evas - это canvas, предоставляемый EFL. Все фигуры, нарисованные в Evas, создаются в виде объектов. В этом примере мы поговорим об изображении квадрата на холсте (canvas).

Создайте проект 'DrawRectSample'. Добавьте код в функцию create_base_gui().

/* Conformant */
ad->conform = elm_conformant_add(ad->win);
elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_SHOW);
elm_win_indicator_opacity_set(ad->win, ELM_WIN_INDICATOR_OPAQUE);
evas_object_size_hint_weight_set(ad->conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(ad->win, ad->conform);
evas_object_show(ad->conform);
/* Label*/
/*ad->label = elm_label_add(ad->conform);
elm_object_text_set(ad->label, "<align=center>Hello EFL</align>");
evas_object_size_hint_weight_set(ad->label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_object_content_set(ad->conform, ad->label);*/
{ /* child object - indent to how relationship */
/* A grid to stretch content within grid size */
Evas_Object *grid = elm_grid_add(ad->win);
evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_object_content_set(ad->conform, grid);
evas_object_show(grid);
{
/* Canvas */
Evas* canvas = evas_object_evas_get(ad->win);
/* Rect-1 */
Evas_Object *rect = evas_object_rectangle_add(canvas);
evas_object_color_set(rect, 255, 0, 0, 192);
evas_object_show(rect);
elm_grid_pack(grid, rect, 4, 5, 52, 31);
}
}
/* Show window after base gui is set up */
evas_object_show(ad->win);

elm_grid_add() - это API, который создает контейнер Grid. Grid — это контейнер, который позволяет помещать объекты на экране сохранением пропорций.

elm_grid_pack() - это API, который помещает объекты в контейнер Grid.

elm_grid_size_set(obj, w, h) - это API, который задает размер объекта Grid.

evas_object_evas_get(Evas_Object *) - это API, который создает объектEvas.

evas_object_rectangle_add(Evas *) - это API, который создает объект Rectangle на холсте.

evas_object_color_set(Evas_Object *, int, int, int, int) - это API, который задает цвет фигуры.

Запустите пример.


Перекрытие двух полупрозрачных квадратов

В это разделе мы поговорим о том, как изменяются цвета при перекрывании фигур. Добавьте код в функции create_base_gui().

/* Rect-1 */
Evas_Object *rect = evas_object_rectangle_add(canvas);
evas_object_color_set(rect, 255, 0, 0, 192);
evas_object_show(rect);
elm_grid_pack(grid, rect, 4, 5, 52, 31);

/* Rect-2 */
rect = evas_object_rectangle_add(canvas);
evas_object_color_set(rect, 0, 255, 0, 192);
evas_object_show(rect);
elm_grid_pack(grid, rect, 44, 5, 52, 31);

/* Rect-3 */
rect = evas_object_rectangle_add(canvas);
evas_object_color_set(rect, 0, 0, 255, 192);
evas_object_show(rect);
elm_grid_pack(grid, rect, 24, 29, 52, 31);
}
}

Запустите пример.


< Лекция 19 || Лекция 20 || Лекция 21 >