PainterEngine 多选框(checkbox)效果
PainterEngine
PainterEngine是一个由C语言编写的完整开源的跨平台图形应用框架,可移植到Windows Linux Android iOS 支持WebAssembly的Web端及嵌入式MCU上
主页
教程
建议先把教程先了解下
PainterEngine 自建GUI控件对象
多选框(checkbox)
1.声明checkbox
PX_Object *checkbox; PX_Object *checkbox1; PX_Object *checkbox2; PX_Object *checkbox3; PX_Object *checkbox4; const char text[] = "default"; const char text1[] = "背景颜色"; const char text2[] = "边框颜色"; const char text3[] = "指针颜色"; const char text4[] = "文本颜色";
2.创建字体和checkbox,并设置颜色
px_bool PX_ApplicationInitialize(PX_Application *pApp,px_int screen_width,px_int screen_height)
{
PX_ApplicationInitializeDefault(&pApp->runtime, screen_width, screen_height);
if (!PX_FontModuleInitialize(&pApp->runtime.mp_resources, &pApp->fm)) return PX_FALSE;
if (!PX_LoadFontModuleFromFile(&pApp->fm, "fzltzhunh.pxf")) return PX_FALSE;
checkbox = PX_Object_CheckBoxCreate(&pApp->runtime.mp_ui, PX_NULL, 0, 0, 200, 40, text, &pApp->fm);
checkbox1 = PX_Object_CheckBoxCreate(&pApp->runtime.mp_ui, PX_NULL, 0, 40, 200, 40, text1, &pApp->fm);
checkbox2 = PX_Object_CheckBoxCreate(&pApp->runtime.mp_ui, PX_NULL, 0, 80, 200, 40, text2, &pApp->fm);
checkbox3 = PX_Object_CheckBoxCreate(&pApp->runtime.mp_ui, PX_NULL, 0, 120, 200, 40, text3, &pApp->fm);
checkbox4 = PX_Object_CheckBoxCreate(&pApp->runtime.mp_ui, PX_NULL, 0, 160, 200, 40, text3, &pApp->fm);
PX_Object_CheckBoxSetBackgroundColor(checkbox1, PX_COLOR(255, 100, 100, 100));
PX_Object_CheckBoxSetBorderColor(checkbox2, PX_COLOR(255, 255, 0, 0));
PX_Object_CheckBoxSetCursorColor(checkbox3, PX_COLOR(255, 0, 255, 0));
PX_Object_CheckBoxSetTextColor(checkbox4, PX_COLOR(255, 0, 0, 255));
return PX_TRUE;
}
3.渲染
px_void PX_ApplicationRender(PX_Application *pApp,px_dword elapsed)
{
px_surface *pRenderSurface=&pApp->runtime.RenderSurface;
PX_RuntimeRenderClear(&pApp->runtime,PX_OBJECT_UI_DEFAULT_BACKGROUNDCOLOR);
PX_ObjectRender(pRenderSurface, checkbox, elapsed);
PX_ObjectRender(pRenderSurface, checkbox1, elapsed);
PX_ObjectRender(pRenderSurface, checkbox2, elapsed);
PX_ObjectRender(pRenderSurface, checkbox3, elapsed);
PX_ObjectRender(pRenderSurface, checkbox4, elapsed);
}
4.发送事件,不然不能响应鼠标
px_void PX_ApplicationPostEvent(PX_Application *pApp,PX_Object_Event e)
{
PX_ApplicationEventDefault(&pApp->runtime, e);
PX_ObjectPostEvent(checkbox, e);
PX_ObjectPostEvent(checkbox1, e);
PX_ObjectPostEvent(checkbox2, e);
PX_ObjectPostEvent(checkbox3, e);
PX_ObjectPostEvent(checkbox4, e);
}
