PainterEngine 多选框(checkbox)效果

PainterEngine

PainterEngine是一个由C语言编写的完整开源的跨平台图形应用框架,可移植到Windows Linux Android iOS 支持WebAssembly的Web端及嵌入式MCU上

主页

https://www.painterengine.com/index.html

教程

https://www.painterengine.com/tutorial.html

建议先把教程先了解下

在这里插入图片描述

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);
}

猜你喜欢

转载自blog.csdn.net/chen_227/article/details/128001600