C# - WinForms - Wer kennt eine C# GDI-Bibliothek nicht LANGSAM GDI+
GDI+ ist sehr langsam, das fast ausschließlich software in der Erwägung, dass GDI ist sehr hardware-beschleunigt.
GDI+ ist, was die Graphics-Klasse verwendet, die auf WinForms, und es ist einfach zu langsam.
Hat jemand eine .NET GDI-Bibliothek, so können wir die Geschwindigkeit haben?
[BEARBEITEN]
Viele Leute sind zu empfehlen OpenGL/DirectX. Eine Forderung von mir ist die client-Kompatibilität, insbesondere remote-desktop. AFAIK remote desktop nicht unterstützt OGL/DirectX out of the box.[/EDIT]
InformationsquelleAutor der Frage Joe | 2011-06-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Text-Darstellung in GDI+ langsamer ist als GDI. Microsoft erkannte dies nach .NET 1.1.
Deshalb .NET 2.0 enthält eine neue
TextRenderer
Klasse, wraps GDI DrawText. Es hat zwei statische Methoden:TextRenderer.MeasureText
TextRenderer.DrawText
.In .NET 2.0 Windows forms-Steuerelemente umgewandelt wurden, zu verwenden
TextRenderer
statt:(vorausgesetzt, Sie drehen aus
UseCompatibleTextRendering
)Zeichnung ein
Bitmap
ist auch langsam in GDI+, das ist, warum Sie verwendenCachedBitmap
. Es zieht sehr schnell.Siehe auch
InformationsquelleAutor der Antwort Ian Boyd
Haben Sie ausgecheckt SlimDX? Es ist ein verwalteter wrapper um Direct2Dist ein voll hardware-beschleunigte 2d-API und mischt auch gut mit traditionellen GDI.
Edit:
Ich fand auch diese Bibliothek, die Sie interessant finden könnte: SharpDX
"SharpDX verwendet werden soll, als alternative managed DirectX framework. Die API wird automatisch generiert aus dem DirectX-SDK-Header, mit AnyCpu Ziel, was bedeutet, dass Sie können Ihre Anwendung ausführen, die auf x86-und x64-Plattform, ohne ein neues Projekt oder das installieren von Assemblys im GAC. SharpDX ist auch die Schnellste Managed-DirectX-Implementierung."
Dieser hat auch die Unterstützung für Direct2D.
InformationsquelleAutor der Antwort Brandon Moretz
Microsoft API Code Pack (Archiv Feb. 2010) Beispiele für das aufrufen von DirectX-APIs von verwalteten Sprachen.
Erhalten Sie WindowsAPICodePack-DirectX auf Nuget.
InformationsquelleAutor der Antwort Dour High Arch
Können Sie versuchen und zu bewegen, um WPF.
Ich Tat es, weil WinForms ziehen langsam ab.
Der übergang ist sehr schwer, vor allem für old-fashioned-code-ers gefällt mir.
Aber WinForms nicht geschlagen werden kann bei Start-Geschwindigkeit und RAM.
WPF beginnt langsam und nimmt viel RAM.
InformationsquelleAutor der Antwort Vercas
Wenn Ihre Anwendung ist cross-Plattform, würde ich empfehlen, mit OpenTKdas ist ein verwalteter wrapper für OpenGL, und ist oft einfacher zu lernen als DirectX (entweder managed oder native). OpenTK/OpenGL neigen liefern eine bessere performance als DirectX als auch. Mit OpenTK, ziehen Sie Ihr Bild ganz auf die GPU, dann Rastern Sie es in eine bitmap, die kann interop mit der Bitmap-Klasse im System.Zeichnung.
InformationsquelleAutor der Antwort IDWMaster