代码:
[C] 纯文本查看 复制代码 /*
*********************************************************************************************************
*
* 模块名称 : GUI界面主函数
* 文件名称 : MainTask.c
* 版 本 : V1.0
* 说 明 : LCD界面
*
* 修改记录 :
* 版本号 日期 作者 说明
* V1.0 2020-09-13 Eric2013 首版
*
* Copyright (C), 2018-2030, 安富莱电子 [url]www.armfly.com[/url]
*
*********************************************************************************************************
*/
#include "MainTask.h"
/*
*********************************************************************************************************
* 变量
*********************************************************************************************************
*/
GX_WINDOW *pScreen;
GX_WINDOW_ROOT *root;
/*
*********************************************************************************************************
* 函 数 名: _cbWindow0
* 功能说明: 窗口回调函数
* 形 参: widget 窗口句柄
* 返 回 值: 无
*********************************************************************************************************
*/
VOID _cbWindow0(GX_WINDOW *widget)
{
GX_RECTANGLE drawto;
GX_RECTANGLE tempdraw;
GX_CANVAS *mycanvas;
GX_POINT my_polygon[3] = { { 150, 210 }, { 250, 210 }, { 200, 260 } };
/* 默认的窗口绘制回调函数,即默认界面效果绘制 */
gx_window_draw(widget);
/* 定义一个矩形框,后续的2D绘制函数都是在这个矩形范围内绘制的 */
gx_utility_rectangle_define(&drawto,
10,
100,
400,
265);
/* 返回窗口对应的canvas画布 */
gx_widget_canvas_get(widget, &mycanvas);
/*
在指定的画布上启动绘图。此功能在内部被延迟绘图算法调用,GUIX在需要画布时自动执行更新。
但是允许应用程序绕过延期绘图算法并立即执行。
首先调用gx_canvas_drawing_inititate在画布上绘画。
然后调用所需的绘图函数,最后然后调用gx_canvas_drawing_complete即可。
*/
gx_canvas_drawing_initiate(mycanvas, widget, &drawto);
/* 设置笔刷画线的颜色值 */
gx_context_raw_line_color_set(0xff000000);
// /* 设置笔刷填充的颜色值 */
// gx_context_raw_fill_color_set(0xff00ff00);
/* 通过GX_BRUSH_SOLID_FILL使能圆圈,矩形,多边形等绘制为填充效果 */
// gx_context_brush_style_set(GX_BRUSH_SOLID_FILL);
gx_context_brush_pattern_set(0x80808080);
/* 设置笔刷线宽 */
gx_context_brush_width_set(1);
/* 绘制直线 */
gx_canvas_line_draw(10, 100, 300, 100);
// /* 绘制圆圈 */
// gx_canvas_circle_draw(120, 150, 50);
// /* 绘制椭圆 */
// gx_canvas_ellipse_draw(300, 150, 100, 50);
// /* 绘制多边形 */
// gx_canvas_polygon_draw(my_polygon, 3);
// /* 绘制矩形 */
// tempdraw.gx_rectangle_left = 30;
// tempdraw.gx_rectangle_top = 210;
// tempdraw.gx_rectangle_right = 100;
// tempdraw.gx_rectangle_bottom = 260;
// gx_canvas_rectangle_draw(&tempdraw);
/* 用于强制立即绘制,注意,务必和gx_canvas_drawing_initiate成对调用 */
gx_canvas_drawing_complete(mycanvas, GX_TRUE);
}
/*
*********************************************************************************************************
* 函 数 名: MainTask
* 功能说明: GUI主函数
* 形 参: 无
* 返 回 值: 无
*********************************************************************************************************
*/
void MainTask(void)
{
/* 避免上电后瞬间的撕裂感 */
LCD_SetBackLight(0);
/*
触摸校准函数默认是注释掉的,电阻屏需要校准,电容屏无需校准。如果用户需要校准电阻屏的话,执行
此函数即可,会将触摸校准参数保存到EEPROM里面,以后系统上电会自动从EEPROM里面加载。
*/
#if 0
LCD_SetBackLight(255);
LCD_InitHard();
TOUCH_Calibration(2);
#endif
/*初始化配置 */
gx_initconfig();
/* 配置显示屏 */
gx_studio_display_configure(DISPLAY_1, stm32h7_graphics_driver_setup_565rgb,
LANGUAGE_ENGLISH, DISPLAY_1_THEME_1, &root);
/* 创建窗口 */
gx_studio_named_widget_create("window", (GX_WIDGET *)root, (GX_WIDGET **)&pScreen);
/* 显示根窗口 */
gx_widget_show(root);
/* 启动GUIX */
gx_system_start();
tx_thread_sleep(100);
LCD_SetBackLight(255);
while(1)
{
tx_thread_sleep(20);
}
}
/***************************** 安富莱电子 [url]www.armfly.com[/url] (END OF FILE) *********************************/
效果:
|