使用 Evas 地图旋转时出现锯齿状边缘图像

Jagged edge Image on rotating with Evas map

我正在使用 EFL Native 应用程序为 Samsung Gear S2 制作手表应用程序。

旋转手表指针时出现问题。
看下图。


这是正常图像,我将其粘贴到 evas_object,但尚未旋转。

我旋转后,手的边缘像这样变成了锯齿状。

齿轮 s2 的分辨率是 360px X 360px 所以我让每张图片都适合这个尺寸。

然后我使用以下代码旋转图像。

Evas_Map *m = NULL;

m = evas_map_new(4);

//evas_map_smooth_set(m, true);
evas_map_util_points_populate_from_object(m, obj);
evas_map_util_rotate(m, degree, cx, cy);
evas_object_map_set(obj, m);
evas_object_map_enable_set(obj, EINA_TRUE);
evas_map_free(m);

我尝试用 evas_map_smooth_set() 函数修复它。
将 EFL 文档写入此设置使图像变为 "SMOOTH" 默认设置为 "true"。但我担心 tizen 将其更改为 "false".

但是在我设置true或false后仍然显示锯齿状。

"Gear Watch Designer"创建的表盘在旋转指针时没有锯齿图像。
如何在没有锯齿边缘的情况下旋转图像?

好的,终于找到为什么旋转时会出现锯齿状边缘了。

在模拟器或我的 gear s2 中,默认 EFL 渲染引擎不是 opengl 后端。

所以我可以用下面的代码修复它。

elm_config_accel_preference_set("opengl");

在创建 window (elm_win_add) 之前编写此代码,它将在旋转图像上制作抗锯齿图像。

很抱歉这么晚才回答,但我相信你可以通过两种方式解决这个问题:

  1. 在映射的 evas 对象上调用 evas_object_anti_alias_set()

  2. 正如您在另一个答案中提到的,使用 GL 加速,但您甚至可能希望在后台缓冲区上启用 MSAA:elm_config_accel_preference_set("opengl:msaa");