|
发表于 2021-11-27 21:57:10
|
显示全部楼层
1. 这个就是GUIX 的demo工程,这是一个Template
2. 这是继承模板的窗体
- VOID page_button_draw(GX_PIXELMAP_BUTTON *widget)
- {
- GX_PIXELMAP *bkgnd;
- GX_PIXELMAP *icon;
- GX_RESOURCE_ID text_id = 0;
- GX_STRING text;
- GX_FONT *font;
- INT width;
- GX_VALUE string_width;
- INT xpos;
- INT ypos;
- INT top;
- INT left;
- INT parent_id = 0;
- GX_BOOL draw_selected = GX_FALSE;
- left = widget->gx_widget_size.gx_rectangle_left;
- top = widget->gx_widget_size.gx_rectangle_top;
- if (widget->gx_widget_style & GX_STYLE_BUTTON_PUSHED)
- {
- draw_selected = GX_TRUE;
- top += 2;
- }
- if (widget->gx_widget_parent)
- {
- parent_id = widget->gx_widget_parent->gx_widget_id;
- }
- switch(widget->gx_widget_id)
- {
- case ID_PATIENTS_BUTTON:
- gx_widget_pixelmap_get(widget, GX_PIXELMAP_ID_ICON_PATIENTS, &icon);
- text_id = GX_STRING_ID_PATIENT_LIST;
- if (parent_id == ID_PATIENTS_SCREEN)
- {
- draw_selected = GX_TRUE;
- }
- break;
- case ID_MEDS_BUTTON:
- gx_widget_pixelmap_get(widget, GX_PIXELMAP_ID_ICON_MEDICATIONS, &icon);
- text_id = GX_STRING_ID_MEDICATIONS;
- if (parent_id == ID_MEDS_SCREEN)
- {
- draw_selected = GX_TRUE;
- }
- break;
- case ID_VITALS_BUTTON:
- gx_widget_pixelmap_get(widget, GX_PIXELMAP_ID_ICON_VITALS, &icon);
- text_id = GX_STRING_ID_VITALS;
- if (parent_id == ID_VITALS_SCREEN)
- {
- draw_selected = GX_TRUE;
- }
- break;
- }
- if (draw_selected)
- {
- gx_widget_pixelmap_get(widget, GX_PIXELMAP_ID_BUTTON_ACTIVE, &bkgnd);
- gx_context_fill_color_set(GX_COLOR_ID_WHITE);
- gx_context_line_color_set(GX_COLOR_ID_WHITE);
- }
- else
- {
- gx_widget_pixelmap_get(widget, GX_PIXELMAP_ID_BUTTON, &bkgnd);
- gx_context_fill_color_set(GX_COLOR_ID_LIGHT_GRAY);
- gx_context_line_color_set(GX_COLOR_ID_LIGHT_GRAY);
- }
- gx_canvas_pixelmap_draw(left, top, bkgnd);
- gx_widget_font_get(widget, GX_FONT_ID_SMALL_BOLD, &font);
- gx_widget_string_get_ext(widget, text_id, &text);
- gx_system_string_width_get_ext(font, &text, &string_width);
- // draw the icon
- width = icon->gx_pixelmap_width + string_width + 10;
- xpos = widget->gx_widget_size.gx_rectangle_right - widget->gx_widget_size.gx_rectangle_left + 1;
- xpos -= width;
- xpos = left + (xpos / 2);
- ypos = widget->gx_widget_size.gx_rectangle_bottom - widget->gx_widget_size.gx_rectangle_top + 1;
- ypos -= icon->gx_pixelmap_height;
- ypos = top + (ypos / 2);
- gx_canvas_pixelmap_draw(xpos, ypos, icon);
- // draw the text
- xpos += icon->gx_pixelmap_width + 10;
- ypos = widget->gx_widget_size.gx_rectangle_bottom - widget->gx_widget_size.gx_rectangle_top + 1;
- ypos -= font->gx_font_line_height;
- ypos = top + (ypos / 2);
- gx_context_font_set(GX_FONT_ID_SMALL_BOLD);
- gx_canvas_text_draw_ext(xpos, ypos, &text);
- }
复制代码
|
|