Подтвердить что ты не робот

С# WinForms - кто-нибудь знает библиотеку С# С#, а не SLOW GDI +

GDI + очень медленный, почти полностью программный, тогда как GDI сильно аппаратно ускорен. GDI + - это то, что класс Graphics использует в WinForms, и он слишком медленный.

Кто-нибудь создал библиотеку .NET GDI, чтобы мы могли иметь скорость?

[EDIT] Многие рекомендуют OpenGL/DirectX. Требованием моей является совместимость с клиентом, особенно удаленный рабочий стол. Удаленный рабочий стол AFAIK не поддерживает OGL/DirectX. [/EDIT]

4b9b3361

Ответ 1

Отрисовка текста в GDI + медленнее, чем GDI. Microsoft поняла это после .NET 1.1.

Вот почему .NET 2.0 содержит новый класс TextRenderer, который обертывает GDI DrawText. Он имеет два статических метода:

В .NET 2.0 все элементы управления WinForm были преобразованы в использование TextRenderer, а не:

  • Graphics.MeasureString
  • Graphics.DrawString

(если вы отключите off UseCompatibleTextRendering)


Рисование a Bitmap также медленное в GDI +, поэтому вы используете CachedBitmap. Это очень быстро.

A CachedBitmap объект хранит растровое изображение в формате, который оптимизирован для отображения на конкретном устройстве. Чтобы отобразить кэшированное растровое изображение, вызовите метод Graphics:: DrawCachedBitmap.

graphics.DrawCachedBitmap(bitmap, 0, 0);

См. также

Ответ 2

Вы проверили SlimDX? Он имеет управляемую оболочку Direct2D, которая является полностью аппаратно ускоренным 2d API, а также хорошо сочетается с традиционным GDI.

Edit:

Я также нашел эту библиотеку, которая может оказаться интересной: SharpDX

"SharpDX предназначен для использования в качестве альтернативной управляемой среды DirectX. API создается автоматически из заголовков DirectX SDK с целью AnyCpu, что означает, что вы можете запускать свое приложение на платформе x86 и x64 без перекомпиляции вашего проекта или установки сборок в GAC. SharpDX также является самой быстрой версией Managed-DirectX."

Это также поддерживает Direct2D.

Ответ 4

Вы можете попробовать перейти в WPF.
Я сделал это, потому что WinForms рисуют медленно.
Переход очень тяжелый, особенно для старомодных кодеров, таких как я.

Но WinForms не могут быть избиты при скорости запуска и ОЗУ.
WPF запускается медленно и занимает много оперативной памяти.

Ответ 5

Если ваше приложение является кросс-платформенным, я бы рекомендовал использовать OpenTK, который является управляемой оболочкой для OpenGL и часто проще чтобы узнать, чем DirectX (управляемый или родной). OpenTK/OpenGL, как правило, обеспечивают лучшую производительность, чем DirectX. С помощью OpenTK вы можете полностью нарисовать свое изображение на графическом процессоре, а затем растрировать его в растровое изображение, которое может взаимодействовать с классом Bitmap в System.Drawing.