diff options
Diffstat (limited to 'examples/gui/demo_view_dc_buffer.c')
| -rw-r--r-- | examples/gui/demo_view_dc_buffer.c | 167 |
1 files changed, 84 insertions, 83 deletions
diff --git a/examples/gui/demo_view_dc_buffer.c b/examples/gui/demo_view_dc_buffer.c index 07ce99bcbc..11770dcedc 100644 --- a/examples/gui/demo_view_dc_buffer.c +++ b/examples/gui/demo_view_dc_buffer.c @@ -1,83 +1,84 @@ -/*
- * �����嵥��DC Buffer��ʾ
- *
- * ������ӻ��ڴ�������view�Ͻ���DC Buffer����ʾ
- */
-
-#include "demo_view.h"
-#include <rtgui/rtgui_system.h>
-#include <rtgui/widgets/label.h>
-#include <rtgui/widgets/slider.h>
-#include <rtgui/image.h>
-
-// static rtgui_image_t *background;
-static struct rtgui_dc *dc_buffer;
-
-/*
- * view���¼���������
- */
-static rt_bool_t dc_buffer_event_handler(rtgui_widget_t* widget, rtgui_event_t *event)
-{
-
- /* ����PAINT�¼����д��� */
- if (event->type == RTGUI_EVENT_PAINT)
- {
- struct rtgui_dc* dc;
- rtgui_rect_t rect;
-
- /*
- * ��Ϊ�õ���demo view�����汾����һ���ֿؼ��������ڻ�ͼʱ��Ҫ��demo view
- * �Ȼ�ͼ
- */
- rtgui_view_event_handler(widget, event);
-
- /* ��ÿؼ�������DC */
- dc = rtgui_dc_begin_drawing(widget);
- /* ��������������DC�����أ�����ؼ��ؼ�������״̬��DC�ǻ�ȡ���ɹ��ģ� */
- if (dc == RT_NULL)
- return RT_FALSE;
-
- /* ���demo view������ͼ������ */
- demo_view_get_logic_rect(RTGUI_VIEW(widget), &rect);
-
- rect.x1 += 10;
- rect.y1 += 10;
- rtgui_dc_blit(dc_buffer, NULL, dc, &rect);
-
- /* ��ͼ��� */
- rtgui_dc_end_drawing(dc);
- }
- else
- {
- /* �����¼�������Ĭ�ϵ��¼��������� */
- return rtgui_view_event_handler(widget, event);
- }
-
- return RT_FALSE;
-}
-
-/* ��������DC Buffer������ʾ�õ���ͼ */
-rtgui_view_t *demo_view_dc_buffer(rtgui_workbench_t* workbench)
-{
- rtgui_view_t *view;
-
- if (dc_buffer == RT_NULL)
- {
- rtgui_rect_t rect = {0, 0, 50, 50};
-
- /* ���� DC Buffer���� 50���� 50 */
- dc_buffer = rtgui_dc_buffer_create(50, 50);
- RTGUI_DC_FC(dc_buffer) = blue;
- rtgui_dc_fill_rect(dc_buffer, &rect);
-
- RTGUI_DC_FC(dc_buffer) = red;
- rtgui_dc_draw_circle(dc_buffer, 25, 25, 10);
- }
-
- view = demo_view(workbench, "����DC��ʾ");
- if (view != RT_NULL)
- /* ���ó��Լ����¼��������� */
- rtgui_widget_set_event_handler(RTGUI_WIDGET(view), dc_buffer_event_handler);
-
- return view;
-}
+/* + * �����嵥��DC Buffer��ʾ + * + * ������ӻ��ڴ�������view�Ͻ���DC Buffer����ʾ + */ + +#include "demo_view.h" +#include <rtgui/rtgui_system.h> +#include <rtgui/widgets/label.h> +#include <rtgui/widgets/slider.h> +#include <rtgui/image.h> + +static rtgui_image_t *background; +static struct rtgui_dc *dc_buffer; + +/* + * view���¼��������� + */ +static rt_bool_t dc_buffer_event_handler(struct rtgui_object* object, rtgui_event_t *event) +{ + struct rtgui_widget *widget = RTGUI_WIDGET(object); + + /* ����PAINT�¼����д��� */ + if (event->type == RTGUI_EVENT_PAINT) + { + struct rtgui_dc* dc; + rtgui_rect_t rect; + + /* + * ��Ϊ�õ���demo view�����汾����һ���ֿؼ��������ڻ�ͼʱ��Ҫ��demo view + * �Ȼ�ͼ + */ + rtgui_container_event_handler(object, event); + + /* ��ÿؼ�������DC */ + dc = rtgui_dc_begin_drawing(widget); + /* ��������������DC�����أ�����ؼ��ؼ�������״̬��DC�ǻ�ȡ���ɹ��ģ� */ + if (dc == RT_NULL) + return RT_FALSE; + + /* ���demo view������ͼ������ */ + demo_view_get_logic_rect(RTGUI_CONTAINER(widget), &rect); + + rect.x1 += 10; + rect.y1 += 10; + rtgui_dc_blit(dc_buffer, NULL, dc, &rect); + + /* ��ͼ��� */ + rtgui_dc_end_drawing(dc); + } + else + { + /* �����¼�������Ĭ�ϵ��¼��������� */ + return rtgui_container_event_handler(object, event); + } + + return RT_FALSE; +} + +/* ��������DC Buffer������ʾ�õ���ͼ */ +rtgui_container_t *demo_view_dc_buffer() +{ + rtgui_container_t *view; + + if (dc_buffer == RT_NULL) + { + rtgui_rect_t rect = {0, 0, 50, 50}; + + /* ���� DC Buffer���� 50���� 50 */ + dc_buffer = rtgui_dc_buffer_create(50, 50); + RTGUI_DC_FC(dc_buffer) = blue; + rtgui_dc_fill_rect(dc_buffer, &rect); + + RTGUI_DC_FC(dc_buffer) = red; + rtgui_dc_draw_circle(dc_buffer, 25, 25, 10); + } + + view = demo_view("����DC��ʾ"); + if (view != RT_NULL) + /* ���ó��Լ����¼��������� */ + rtgui_object_set_event_handler(RTGUI_OBJECT(view), dc_buffer_event_handler); + + return view; +} |
