Compact Framework - облегченная структура графического интерфейса пользователя?

Winform на CF немного тяжелый, инициализация множества дескрипторов окон требует серьезного времени и памяти. Другой проблемой является отсутствие встроенной двойной буферизации и отсутствие контроля над рендерингом пользовательского интерфейса, что означает, что во время операций, интенсивно использующих процессор, пользовательский интерфейс может оставлять пользователя пристальным взглядом на наполовину визуализированный экран. Отлично!

Чтобы решить эту проблему, я хотел бы найти легкую структуру управления, есть ли она уже в работе или придется заняться самодельной работой?

Под легкостью я имею в виду библиотеку элементов управления, которая позволяет полностью контролировать отрисовку элементов управления и не использует много дорогостоящих дескрипторов окон.

ПРИМЕЧАНИЕ. Не говорите, что я слишком много использую поток пользовательского интерфейса. Это случай нет.

немного поздно, чтобы закрыть это, а?

Quibblesome 17.09.2013 21:45
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
1
2 559
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Фактически, вы можете переопределить событие рисования.

Идея состоит в том, что вы переносите длительные операции в отдельный поток. На самом деле это не отличается от любой другой событийно-управляемой структуры. Что-либо, который полагается на обработку события Paint, будет восприимчив к этому.

Кроме того, нет системы, которая позволяет вам определять, когда возникает событие рисования. Такое событие обычно вызывается уровнем диспетчера окон, который находится за пределами приложения (или даже фреймворка). Вы можете обработать событие самостоятельно и просто иногда не работать, но я бы не рекомендовал это.

a bit slow and you can't control the paint event so during processor intensive operations the UI might leave the user staring at a half rendered screen.

Как правило, выполнять дорогостоящие задачи в потоке пользовательского интерфейса - плохая идея. Чтобы ваш пользовательский интерфейс оставался отзывчивым, эти задачи должны выполняться рабочий поток

Хорошо, просто идея из моей головы ...

Как насчет создания объекта синхронизации, например критическая секция или одиночная блокировка в вашем приложении, разделяемая между вашими рабочими и графическими потоками. Отменить краску. Когда вы начинаете рисовать, заблокируйте все другие потоки, чтобы у вас не остался наполовину нарисованный экран, пока они загружают процессор.

(это, конечно, предполагает, что самое важное, что вам нужно, - это представить красивую картинку пользователю;))

Ответ принят как подходящий

На днях я наткнулся на это, что может быть полезно, по крайней мере, в качестве отправной точки: Fuild - Сенсорное управление Windows Mobile .NET. Внешний вид приятный, но нет поддержки времени разработки. Я не слишком много знаю об объеме памяти и т. д., Но все имеет двойную буферизацию, и производительность кажется довольно хорошей.

Другие вопросы по теме

Как заставить PictureBox использовать передискретизацию ближайшего соседа?
Действительно ли GDI + все еще «пригодная для использования» технология?
.Net ошибка обрезки чертежей
Информация о растровом изображении регулярно возвращает серию одних и тех же неправильных значений, прежде чем возвращать правильные цвета пикселей
Как избежать повреждения кучи при заполнении индексированного растрового изображения с помощью Bitmap.LockBits и Marshal.Copy?
Graphics.DrawString странный ненормальный кернинг
Gdi+ Graphics(HDC) vs Graphics(HWND) – какой из них использовать?
Почему мне нужно передавать PixelFormat.Format8bppIndexed в Bitmap.LockBits, если мое растровое изображение использует другой индексированный PixelFormat?
WinAPI 32 и GDI+ перемещают окно при перетаскивании изображения PNG с некоторой областью с прозрачностью
C Создайте собственное окно (GUI) для просмотра прокрутки, используя ScrollWindowEx() неправильное содержимое