1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/william_lzw-ExDUIR

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README_EN.md

ExDUIR

Введение

Lightweight DirectUI framework для платформы Windows.

Этот проект основан на открытом исходном коде ExDirectUI 4.1.18.

Улучшения по сравнению с оригиналом

Пожалуйста, обратитесь к журналу обновлений (CHANGELOG.txt).

Обратная связь и помощь

Среда win10+

Для win7 требуется установить патч KB2670838.

Запустите ExDUIR на виртуальной машине VMware с операционной системой win7, установите патчи KB2670838 и KB4474419, затем установите VMware Tools.

Компоненту мультимедиа необходимо установить Microsoft.HEVCVideoExtension.Appx для воспроизведения видео в формате H265 mp4.

Компилятор В настоящее время поддерживаются следующие два метода компиляции:

  • Visual Studio 2019 (рекомендуется). ExDUIR.sln. Включает следующие элементы:
    • dll: компиляция в динамическую библиотеку. -> libexdui.dll.
    • libexdui: компиляция в статическую библиотеку. -> libexdui.lib.
    • libexduiCPP: инкапсуляция класса C++ и демонстрация вызова.
    • test: тестовый проект.
  • Только CMake. Поддерживаются только компиляторы MSVC.

Характеристики

  • Функция рендеринга — DirectX11, Direct2D, эффективность в сотни раз выше, чем у GDI.
  • Поддержка Unicode, поддержка нескольких языков.
  • Имитация механизма обмена сообщениями Windows путём отправки сообщений и распространения уведомлений компонентам, совместимость с собственными сообщениями и константами Windows. Написание Win32 API более гибкое, чем написание классов.
  • Вызов методов стиля Win32 API, поддержка создания статической библиотеки lib и динамической библиотеки DLL. Сгенерированную динамически подключаемую библиотеку можно вызывать на других языках, таких как Python, Java, Go, Delphi, C#, VB, EasyLang и т. д.
  • Свободные и гибкие компоненты расширения, движок обрабатывает базовую логику. Пользователю нужно только написать код рисования и не беспокоиться о сложной обработке сообщений.
  • В настоящее время поддерживается компонент: кнопка, переключатель, радиокнопки, поле выбора, поле редактирования, поле расширенного редактирования текста, список просмотра, шаблон списка просмотра, групповые поля, поля со списком, меню, древовидная структура, ползунок, радиокнопки, поле выбора, TAB, анимация, вращающееся изображение, страница, изображение, окно сообщения, список значков, список кнопок, панель инструментов, строка состояния, поле даты, цветовая палитра, палитра цветов, поле заголовка, поле календаря, кнопка счёта, браузер Cef3, доска для рисования, медиаплеер, выпадающее меню, доска тегов. Можно создавать суперклассы на основе этих компонентов.
  • Поддерживается автоматическое обновление позиций компонентов при изменении размера окна. В настоящее время поддерживаются следующие макеты: абсолютный макет, относительный макет, линейный макет, потоковый макет и табличный макет. Пользователи могут расширять макет.
  • Автоматическое воспроизведение анимации изображений формата GIF, поддерживаемые форматы изображений: PNG, JPEG, BMP, GIF, DDS, ICON. Окна или компоненты могут использовать изображения указанных форматов в качестве фона.
  • 34 типа замедления, пользователи могут свободно писать замедление окон или компонентов. Пользователи могут расширить алгоритм замедления.
  • Окна поддерживают окна специальной формы, окна формы изображения. Окна и компоненты поддерживают прозрачность от 0 до 255. Поддерживает размытие по Гауссу.
  • Поле редактирования поддерживает форматированный текст и поддерживает загрузку документов в формате RTF.
  • Окна или компоненты могут получать перетаскиваемые файлы или текст.
  • Поддержка модальных окон.
  • Поддержка уведомлений об ограниченных областях.

Концепции рисования окон

  • Графический интерфейс основан на окнах и механизме обмена сообщениями. Элементы управления рисуются в окне и реагируют на сообщения, такие как мышь и клавиатура, для реализации функциональности. Например, когда мышь перемещается над кнопкой, нажатие на неё вызовет событие нажатия кнопки и изменит состояние отрисовки кнопки на нажатое. Рисование окон и элементов управления использует либо GDI, либо DirectX, последний намного быстрее благодаря использованию аппаратного ускорения GPU.
  • ExDuiR использует DirectX (DirectX 11 и Direct2D) для рисования, чтобы использовать ускорение графического процессора, и подклассы окон для включения пользовательского рисования и обработки сообщений.

Общий дизайн

  • ExDuiR предоставляет API в виде функций. to allow compiling into DLLs for use by other languages.
  • ExDuiR включает пользовательские базовые классы, такие как Array, HandleTable, HashTable, Theme, Resource, Easing, ImageList, Layout, MemPool, Thread, DropTarget.
  • Базовые классы для рисования включают Brush, Canvas, Font, Image, Matrix, Path, Region, StrokeStyle.

Extension component description

Ex_ObjRegister регистрирует класс компонента, рисует компонент в сообщении WM_PAINT в обратном вызове и другие сообщения контролируют состояние компонента. Создайте компонент с именем класса. Количество свойств, требуемых компонентом, устанавливается в cbObjextra Ex_ObjRegister, и каждое имеет размер по умолчанию 8 байт. Используйте индекс, начинающийся с 0 (отрицательные числа являются встроенными индексами для базового компонента, не используйте). Используйте Ex_ObjSetLong для установки свойств и Ex_ObjGetLong для получения свойств.

  • Можно создать суперкласс для расширения компонента на class_rotateImageBox_ex.cpp поверх обратных вызовов базового компонента, которые по умолчанию возвращают Ex_ObjCallProc.
  • Вы можете настроить обратный вызов расширения компонента для ссылки на class_titlebar_ex.cpp. По умолчанию обратный вызов возвращает Ex_ObjDefProc. Компонент рисования начинается с вызова Ex_ObjBeginPaint, передавая структуру рисования, и заканчивается вызовом Ex_ObjEndPaint.

Demo

demo_all:

image

demo button and switch:

image

demo buttonex:

image

demo combobox:

image

demo custom menu:

image

demo custom background:

image

demo drag obj:

image

demo drop and drag:

image

demo easing:

image

demo edit and richedit:

image

demo editex:

image

demo groupbox:

image

demo iconlistview:

image

demo irregular shape window:

image

demo label and background:

image

demo layout-absolute:

image

demo layout-flow:

image

demo layout-linear:

image

demo layout-relative:

image

demo layout-table:

image

demo listview:

image

demo loading:

image

demo matrix:

image

demo menubutton:

image

demo messagebox:

image

demo navbutton:

image

demo nchitest:

image

demo progressbar:

image

demo radio and checkbox:

image

demo reportlistview:

image

demo rotatebox:

image

demo sliderbar:

image

demo treeview:

image

demo modal:

image

demo titlebar:

image

demo datebox:

image

demo palette:

image

demo color picker:

image

demo calendar:

image

demo cefbrowser:

image

demo score button:

image

demo template listview: ### демонстрационная доска для рисования:

image

демонстрационная сетка свойств:

image

демо-версия медиаплеера:

image

демо-версия SVG:

image

демо-версия карусели:

image

демо-версия ролл-меню:

image

демо-версия лотка:

image

демо-версия маски:

image

демонстрационный редактор тегов:

image

демонстрация эффекта:

image

демонстрация работы с контуром и областью:

image

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/william_lzw-ExDUIR.git
git@api.gitlife.ru:oschina-mirror/william_lzw-ExDUIR.git
oschina-mirror
william_lzw-ExDUIR
william_lzw-ExDUIR
master