Часть моего графического интерфейса работает медленно
Я столкнулся с проблемой с моим графическим интерфейсом. В моем графическом интерфейсе есть несколько частей. Первый - для изображения (от 500х500 до 3000х3000, и оно должно обновляться до 4 раз в секунду) Второй - это главное меню, а третий - кнопки с опциями относительно изображения. Я не показываю их все сразу, я прокручиваю несколько меню и визуализирую только те, которые видны. (Примером для отпионов является размер пикселя изображения) Я показываю изображение внутри окна просмотра размером 800x800px. Я растягиваю изображение внутри коробки с помощью
Stretch="{Binding Path=StretchMode}"
Изображение, которое я получаю, - это какой-то поток. Я получаю несколько изображений каждую секунду.
Теперь, когда я показываю изображение, первая часть графического интерфейса работает нормально (независимо от размера изображения), но другие иногда имеют тяжелую рамку. Приведу несколько примеров:
Пример 1:
Изображение размером 500х500 пикселей. Я могу работать без фреймдропа, и весь графический интерфейс обновляется правильно.
Пример 2:
Изображение размером 1500х1500 пикселей. Я могу работать без Фреймдропа, и весь графический интерфейс обновляется правильно.
Пример 3:
Изображение размером 2500x2500 пикселей. Изображение обновляется быстро, но остальная часть графического интерфейса имеет частоту кадров от 60 кадров в секунду до 1 кадра в секунду, а иногда даже до 1 кадра в секунду.
Я надеюсь, что вы можете дать мне некоторые идеи, почему графический интерфейс имеет такое поведение. Если вам нужен код, Пожалуйста, скажите мне.
Я не использую виртуальную машину. Проблема возникает в Windows 7 64 bit и Windows 8.1 64 bit (не тестируется в Windows 10) мое оборудование отличается. Проблема появляется на моем ноутбуке (процессор i7-4702MQ @2,2 ГГц, 8 Гб DDR оперативной памяти, процессор Intel встроенного графического) и на workpc с различными характеристиками (самые высокие: процессор Intel Xeon с тактовой частотой 3,5 ГГц, 128 ГБ оперативной памяти DDR4 и Титан х и 4K-монитор)
Что я уже пробовал:
1. Оборудование находится на пределе своих возможностей. Но взгляд на Taskmanager и анализ CPU/RAM с помощью Visual Studios говорит о том, что все в порядке.
2.это слишком много для рендеринга графического интерфейса, потому что 3000x3000-это большой размер, и 4 раза в секунду тоже не медленно. После теста с загруженными (я загрузил их с жесткого диска) изображениями 3000х3000 (тот же тип данных) он работал быстро и без проблем.
3. Слишком много изменений графического интерфейса сразу. Я попробовал программное обеспечение только с 5 обновлениями. Все та же проблема.
4. событие Microsoft Prism не происходит. Это тоже было не так, потому что он входит в контроллер и вызывает изменения, если есть изменения. (У меня есть регистратор, который записывает лог-файлы, и он вызывает событие изменения больше, чем действительно меняется графический интерфейс)
5. Использование другого типа данных. Возможно, но я попробовал несколько. (BitmapSource, BitmapImage и WriteableBitmap)
6. Аутсорсинг некоторые варианты перевода в другой ветке. По-прежнему никаких изменений.
Philippe Mori
Если изображения настолько велики, то в зависимости от формата изображения вы даже не сможете прочитать их с диска с такой скоростью... Например, необработанные изображения с цифровой камеры довольно медленны по сравнению с файлами JPEG.
Evosoul04
Я получаю необработанные изображения 3000x3000 в виде массива ushort и должен преобразовать их в растровый источник. Эта работа. Изображения обновляются правильно, но остальная часть графического интерфейса обновляется неправильно