Entwicklerhandbuch

.NET, WPF & C++ Diagrammarchitektur, Datenbehandlung und Leistung

developer guide
.net chart
wpf chart
c# chart component
scientific chart
winform chart
charting component
chart control

Entwicklerhandbuch
.NET, WPF & C++ Diagrammarchitektur, Datenbehandlung und Leistung

Dieses Handbuch behandelt alles, was Sie benötigen, um professionelle Diagramme mit ProEssentials zu erstellen — von der Auswahl des richtigen Diagrammobjekts über die effiziente Datenverarbeitung bis hin zu GPU-beschleunigtem Echtzeit-Streaming. ProEssentials ist eine native .NET- und C++-Diagrammkomponente mit Direct2D-, Direct3D- und GdiPlus-Rendering, die für die geringste CPU/GPU-Belastung und das schnellste verfügbare Diagramm-Rendering entwickelt wurde. Ob Sie ein WinForm-Diagramm, ein WPF-Diagramm oder eine MFC C++-Visualisierung erstellen — dies ist Ihre technische Referenz.

Auswahl eines Diagrammobjekts

Jede ProEssentials-Implementierung beginnt mit der Auswahl eines der fünf Diagrammobjekte. Diese Wahl bestimmt die gesamte Implementierung — Datenmodell, Achsenverhalten, Darstellungsmethoden und verfügbare Funktionen. Wählen Sie basierend auf Ihren Daten und Ihrem Visualisierungsziel.

Pego — Graph-Objekt 37 Beispiele

Das Standard-.NET-Diagrammsteuerelement für kategorische und sequentielle X-Achsen-Daten. Unterstützt Balken, Linie, Fläche, gestapelte Balken, gestapelte Fläche, OHLC, High-Low-Close, Ribbon und insgesamt 27 Darstellungsmethoden. X-Achsen-Beschriftungen werden über ein PointLabels-String-Array gesetzt — kein numerisches X-Datenarray erforderlich.

Verwenden für: Dashboards, Balkendiagramme, Finanz-OHLC/Candlestick, kategorische Vergleiche, gleichmäßig verteilte Zeitreihen.

Pesgo — Wissenschaftliches Graph-Objekt 50 Beispiele

Die wissenschaftliche Diagrammkomponente für kontinuierliche numerische X-Achsen-Daten. Unterstützt Scatter, Linie, Spline, Bubble, Fläche, Kontur/Heatmap und insgesamt 26 Darstellungsmethoden. Erfordert explizite X-Datenarrays mit PeData.X[subset, point]-Werten. Unterstützt Jagged Data (Subsets mit unterschiedlichen Punktzahlen), Konturrendering und die umfangreichsten Echtzeit-Streaming-Optionen.

Verwenden für: Wissenschaftliche Datenvisualisierung, XY-Scatter-Plots, Echtzeit-Streaming-Diagramme, Zeitreihen mit unregelmäßigen Intervallen, Kontur- und Heatmap-Diagramme, Bubble-Charts.

Pe3do — 3D Wissenschaftliches Diagramm 18 Beispiele

Rendert 3D-Oberflächen, Wireframe, 3D-Konturen, 3D-Balkendiagramme und 3D-Scatter-Plots mit X-, Y- und Z-Datenarrays und Direct3D-Rendering. Y ist die vertikale (Höhen-)Achse. Unterstützt Echtzeit-3D-Oberflächenanimation über AppendData (scrollende Oberfläche) oder AppendSubset (Wasserfall).

Verwenden für: 3D-Oberflächendiagramme, Wireframe-Visualisierungen, topografische Konturen, 3D-Wasserfalldiagramme, Geländerendering.

Pepso — Polar- / Smith-Objekt 7 Beispiele

Die Polarkoordinaten-Diagrammkomponente für Winkeldaten. Unterstützt polare Linien, polaren Scatter, Radar-/Spinnennetzdiagramme, Rosendiagramme und Smith-Diagramme für HF-Technik. Daten werden als Winkel und Betrag ausgedrückt.

Verwenden für: Polarkoordinatendiagramme, Radar-/Spinnennetzdiagramme, Rosendiagramme, Smith-Diagramme, HF-Impedanzvisualisierung.

Pepco — Kreisdiagramm-Objekt 4 Beispiele

Rendert Kreisdiagramme, Ringdiagramme und Mehrringdiagramme mit explodierten Segmenten, Prozentbeschriftungen und Legendenintegration. Einzelnes Datenarray für Segmentwerte.

Verwenden für: Kreisdiagramme, Ringdiagramme, proportionale Datenvisualisierung.

Datenbehandlungsmuster

ProEssentials bietet sechs Datenlademuster, die je nach Datensatzgröße und Leistungsanforderungen ausgewählt werden. Daten sind als Subsets (Serien/Linien) × Punkte (Datenwerte) organisiert. Setzen Sie zuerst PeData.Subsets und PeData.Points, dann füllen Sie die Datenarrays. Best Practice: Halten Sie die Datenaufbereitung von ProEssentials-API-Code getrennt — erstellen Sie Ihre Arrays aus Ihren Datenquellen, dann übergeben Sie die fertigen Arrays an ProEssentials.

Muster 1: Direkte Indizierung Unter 10K Punkte

Weisen Sie Werte einzeln mit PeData.Y[subset, point] = value zu. Für Pesgo auch PeData.X setzen. Für Pe3do auch PeData.Z. Einfach und klar — am besten für Demos und kleine statische Datensätze.

Muster 2: FastCopy Unter 250K Punkte

Erstellen Sie ein Float-Array in Ihrem Code, dann rufen Sie PeData.Y.FastCopyFrom(array) auf. Vermeidet den Overhead pro Element bei Interop. Überladungen existieren für 1D-, 2D- und Jagged-Arrays.

Muster 3: UseDataAtLocation 250K+ Punkte, Zero-Copy

Zeigt das Diagramm direkt auf Ihr verwaltetes Array — keinerlei Datenkopie. Rufen Sie PeData.Y.UseDataAtLocation(array, bufferSize) auf. Am besten für sehr große Datensätze, gemeinsame Daten über mehrere Diagramme oder Echtzeit-Szenarien.

Muster 4: AppendData Streaming / Echtzeit

Rufen Sie PeData.Y.AppendData(newValues, amountPerSubset) auf, um neue Daten zu pushen. Verschiebt automatisch bestehende Daten. Kombinieren Sie mit CircularBuffers für Ring-Buffer-Leistung bei 100K+ Datenpunkten.

Muster 5: BindData Datenbank / DataReader

Laden Sie direkt aus ADO.NET DataReader oder DataView mit PeData.Y.BindData(). Praktisch für datenbankgesteuerte Diagrammanwendungen.

Muster 6: Jagged Data Subsets mit variabler Länge

Aktivieren Sie PeData.JaggedData = true, wenn Subsets unterschiedliche Punktzahlen haben. Erfordert RenderEngine = Direct2D. Drei Untermethoden: direkte Indizierung, CopyFromJagged oder UseJaggedDataAtLocation.

DuplicateData-Optimierung: Wenn alle Subsets identische X-Daten teilen (häufig bei Pesgo), setzen Sie PeData.DuplicateDataX = DuplicateData.PointIncrement. Geben Sie X-Daten nur für Subset 0 an — das Diagramm verwendet sie für alle Subsets wieder und eliminiert redundante Speicherung.

Echtzeit-Streaming

ProEssentials unterstützt fünf Echtzeit-Aktualisierungsstrategien, von einfachen Streifendiagrammen bis hin zu GPU-beschleunigtem Hochfrequenz-Streaming mit Millionen von Datenpunkten.

Grundlegende Einrichtung (alle Echtzeit-Diagramme): PeConfigure.PrepareImages = true, PeConfigure.CacheBmp = true (cacht statische Elemente für flimmerfreies Neuzeichnen), PeSpecial.AutoImageReset = false (überspringt automatische Dirty-Checks). Manuelle Achsenskalierung wird dringend empfohlen, um das Scannen des gesamten Datensatzes nach Min/Max bei jedem Tick zu vermeiden.

AppendData-Streifendiagramm

Verschiebt bestehende Daten, fügt neue am Rand hinzu. Das häufigste Echtzeitmuster. Funktioniert mit Pego, Pesgo und Pe3do. Kombinieren Sie mit CircularBuffers für 100K+ Punkt Ring-Buffer-Leistung.

FastCopyFrom Vollständiger Ersatz

Ersetzen Sie alle Daten bei jedem Tick. Am besten für Oszilloskop-artige Wellenformanzeigen, bei denen sich der gesamte Puffer gleichzeitig ändert. Beispiel: 4 Subsets × 100K Punkte = 400K Werte pro Tick ersetzt.

Direkte Index-Zirkulärschreibung

Schreiben Sie direkt per Index, Zähler am Pufferende zurücksetzen. Kein Verschieben, kein Anhängen — einfach an Ort und Stelle überschreiben. Gut für zirkuläre Anzeigen.

AppendSubset-Wasserfall

Nur Pe3do. Fügt bei jedem Tick ein neues vollständiges Subset hinzu und erzeugt 3D-Wasserfallvisualisierungen. Jeder Tick fügt eine neue Reihe zum Wasserfall hinzu.

UseDataAtLocation Zero-Copy

Die Anwendung verwaltet ihren eigenen Speicher; das Diagramm liest direkt daraus. Kein Kopieroverhead. Kombinieren Sie mit CircularBuffers und AppendData — ProEssentials hängt Daten mit zirkulären Zeigern an Ihren lokalen Speicher an. Beispiel: 4 Subsets × 2M Punkte mit Zero-Copy.

GPU-Leistungsmerkmale

ProEssentials liefert das schnellste verfügbare Diagramm-Rendering durch natives Direct2D- und Direct3D-Rendering mit GPU-Beschleunigung. Diese Funktionen können für maximalen Durchsatz kombiniert werden.

ComputeShader

PeData.ComputeShader = true. Lagert die Diagrammkonstruktion auf die GPU aus — potenziell 2000+ Kerne vs. einen einzelnen CPU-Thread. Gilt für Pesgo und Pe3do mit Direct3D-Render-Engine. Erzeugt dramatische Beschleunigung für große Datensätze, bei denen die Diagrammgeometrie auf der GPU statt auf der CPU erstellt wird.

Filter2D3D

PeData.Filter2D3D = true (nur Pesgo). Zweistufige ComputeShader-Pipeline: zuerst werden sequentielle 2D-Liniendaten verlustfrei vorgefiltert, dann konstruiert der finale Shader die Szene. Dramatische Geschwindigkeitsverbesserung für 250K+ Punkt-Liniendiagramme. Verwenden Sie mit ComputeShader = true.

CircularBuffers

PeData.CircularBuffers = true. Verwendet einen Ring-Buffer-Zeiger anstelle des Speicherverschiebens bei jedem AppendData-Aufruf. Essentiell für Echtzeit-Streaming mit 100K+ Datenpunkten. Funktioniert mit Pego, Pesgo, Pepso und Pe3do.

StagingBuffers

PeData.StagingBufferX/Y/Z = true. Hält GPU-seitige Kopien der Datenarrays für eine effiziente CPU-zu-GPU-Übertragungspipeline. Aktivieren Sie pro Achse, die während des Echtzeit-Renderings aktualisiert wird.

Rendering-Engines

Drei Render-Engines: Direct2D, Direct3D und GdiPlus. Direct3D aktiviert ComputeShader und volle GPU-Beschleunigung. Direct2D unterstützt Jagged Data und erweitertes 2D-Rendering. GdiPlus ist der Legacy-Fallback mit breitester Kompatibilität.

Architektur & Eigenschaftsschnittstelle

ProEssentials verwendet eine hierarchische Eigenschaftsschnittstelle. Alle Diagrammkonfiguration erfolgt über verschachtelte Eigenschaftsobjekte, auf die vom Diagrammsteuerelement aus zugegriffen wird. Diese Architektur gilt gleichermaßen für .NET-Diagramm-, WPF-Diagramm- und C++-DLL-Entwicklung.

Hierarchical Property Groups

Eigenschaftsgruppen: PeData (Datenarrays, Zähler, Modi), PePlot (Darstellungsmethode, visuelle Optionen), PeGrid (Achsenskalen, Gitterlinien, Zoom), PeColor (Farben für alle Elemente), PeString (Beschriftungen, Titel), PeFont (Schriftgrößen), PeAnnotation (Referenzlinien, Graph-Annotationen, Achsen-Annotationen), PeUserInterface (Interaktion, Cursor, Hotspots, Scrollbalken), PeConfigure (Rendering, Caching), PeFunction (Aktionen — Reinitialisierung, Drucken, Zoomen, Export), PeTable (Datentabelle unter dem Diagramm), PeLegend (Legendenkonfiguration).

Enum-Driven Configuration

Enum-gesteuerte Konfiguration: Die meisten Verhaltenseinstellungen verwenden Enums — niemals Integer-Werte hartcodieren. Wichtige Enums: GraphPlottingMethod, SGraphPlottingMethod, ManualScaleControl, ViewingStyle, QuickStyle, RenderEngine, AllowZooming, MultiAxisStyle, CursorMode und CursorPromptStyle. Wichtig: PePlot.Method verwendet für jedes Diagrammobjekt ein anderes Enum.

Rendering Pipeline

Rendering-Pipeline: PeConfigure.CacheBmp = true sollte immer gesetzt werden — es cacht das gerenderte Bild im Speicher für flimmerfreies Neuzeichnen. PeFunction.ReinitializeResetImage() führt einen vollständigen Neuaufbau nach Datenänderungen durch. PeFunction.ResetImage(0,0) erstellt das Bild nur nach visuellen Änderungen neu. ProEssentials enthält KI-artige Logik, die automatisch ungünstig aussehende Diagramme durch intelligente Achsenskalierung, Beschriftungsplatzierung, Legendenlayout und Gitterlinienabstände verhindert.

Two API Layers

Zwei API-Schichten: Die .NET-Eigenschaftsschnittstelle und die C++-DLL-Schnittstelle sind austauschbar — beide greifen auf die gleiche native Engine zu. .NET ist Standard für C#/VB/WPF. Die DLL-Schnittstelle wird für MFC C++, Delphi und Spezialfälle verwendet. PeSpecial.HObject liefert den nativen DLL-Handle für Interop-Szenarien.

Annotationen & Beschriftungen

ProEssentials bietet ein umfassendes Annotationssystem zum Hinzufügen von Referenzlinien, Textmarkierungen, Callout-Beschriftungen, Formen und Datentabellen zu jedem Diagramm.

Line Annotations

Linien-Annotationen: Horizontale und vertikale Referenzlinien bei Datenkoordinaten. Setzen Sie PeAnnotation.Line.YAxis[i] für horizontale Linien, PeAnnotation.Line.XAxis[i] für vertikale Linien. Unterstützt 16+ Linienstile, Farben pro Annotation, Textbeschriftungen und Zoom-Fenster-Sichtbarkeitskontrolle.

Graph Annotations

Graph-Annotationen: Platzieren Sie Symbole, Text, Linien, Formen und Bitmaps an beliebigen Datenkoordinaten. Unterstützt gedrehten Text, verbundene Linien, Text-Dodging (automatische Überlappungsvermeidung), zusammengesetzte Muster, Bitmaps und individuelle Formatierung pro Annotation. Unabhängig von Diagrammdaten — verwenden Sie sie für Callout-Beschriftungen, Overlay-Marker und dekorative Elemente.

Table Annotations

Tabellen-Annotationen: Bis zu 20 unabhängige positionierte Tabellenelemente, die innerhalb von Achsenbereichen, an Diagrammrändern oder an Datenpunkten ausgerichtet erscheinen können. Unterstützen Mehrspalt- und Mehrzeilenlayouts mit individueller Zellenformatierung. Verwendet für benutzerdefinierte Legenden, Datenzusammenfassungen und Info-Panels.

Quick Annotations

Quick-Annotationen: Temporäre Graph-Annotationen, die über einen optimierten Pfad gerendert werden, der vollständige Bildneuaufbauten vermeidet. Ideal für Messoverlays, Ziehrechtecke, Fadenkreuze und transiente UI, die sich bei jeder Mausbewegung aktualisiert.

Benutzerinteraktion & Ereignisse

ProEssentials löst .NET-Ereignisse für Benutzerinteraktionen aus, einschließlich Daten-Hotspot-Klicks, Cursor-Tracking, Zoom-Änderungen und benutzerdefinierter Ereignisbehandlung. Wichtige Muster umfassen Pixel-zu-Datenkoordinaten-Konvertierung (ConvPixelToGraph), Hotspot-Erkennung für klickbare Diagrammbereiche und Cursor-Tracking mit konfigurierbaren Tooltip-Stilen. Unterstützt Mausrad-Zoom, interaktives Daten-Scrolling und Popup-Menü-Anpassung.

Multi-Axis Charts

Mehrfachachsen-Diagramme: Zeigen Sie mehrere Y-Achsen in einem einzelnen Diagramm an. Jede Achse erhält eigene Skalierung, Gitternummern, Beschriftung und Farbe. Subsets werden Achsen über MultiAxisStyle- und WorkingAxis-Eigenschaften zugewiesen. Unterstützt sowohl getrennte Graphenbereich- als auch überlappende Achsenlayouts.

Zoom and Scroll

Zoom und Scrollen: Pesgo unterstützt drei unabhängige Achsenkontrollebenen — automatisch skaliert, manuell skaliert und zoom-gesteuert. Zoom überlagert manuelle Skalierung, ohne manuelle Werte zu ändern. Pego verwendet PointsToGraph für Scrollbalken-basierte Navigation. Interaktiver Zoom wird über AllowZooming-Enum und Mausrad-Konfiguration gesteuert.

Date/Time Axes

Datum/Uhrzeit-Achsen: ProEssentials unterstützt Datum/Uhrzeit-X-Achsen durch serielle Datumswerte. Aktivieren Sie DateTimeMode auf PeData, dann übergeben Sie Daten als OLE-Automation-Doubles. Unterstützt sowohl gleichmäßige Zeitschritte (DeltaX) als auch variable Zeitschritte (DeltasX-Array).

Styling and Appearance

Visuelles Styling: Farben werden über die PeColor-Eigenschaftsgruppe gesteuert mit SubsetColors pro Serie, Graphenbereich-Farben, Achsenfarben und Gitterlinien-Transparenz. Schnelle visuelle Themen über ViewingStyle- und QuickStyle-Enums. Schriftgrößen verwenden ein proportionales Kontrollsystem. Datenvisualisierungsfunktionen umfassen 3D-Schatteneffekte, konfigurierbare Punktgrößen, Linienstile und Balkenbreiten-/Abstandskontrolle.

Printing and Export

Drucken und Export: Programmatisches Drucken über PeFunction.PrintGraph() und PeFunction.PrintGraphEx() mit Ausrichtungs- und Randkontrolle. Bildexport in BMP-, JPG-, PNG-, EMF- und SVG-Formate. Zwischenablage-Kopierfunktion. Alle Exporte berücksichtigen die aktuelle Render-Engine für konsistente Ausgabe.

KI-gestützte Entwicklung

ProEssentials enthält ein Python-basiertes KI-Assistenzsystem, das jedem KI-Assistenten bei Bedarf Zugriff auf die vollständige API gibt — mit Ground-Truth-Validierung, die halluzinierte Eigenschaftspfade verhindert. Das System umfasst pe_query.py (15+ Abfragebefehle), 32 Wissensdateien, 116 Codebeispiele und strukturierte JSON-Daten mit 1.104 Eigenschaften, 1.260 Methoden und 167 Enums.

KI-Code-Assistent-Einrichtung

Wissensdatei-Downloads

Diese KI-Wissensdateien sind in Ihrer ProEssentials-Installation enthalten und auch hier zum Download verfügbar. Laden Sie sie in Claude AI-Projekte oder Ihr bevorzugtes KI-Tool für KI-gestützte ProEssentials-Entwicklung.

Architecture & Fundamentals

Chart Object Patterns

Axes & Scaling
Annotations & Labels

Interaction & Events

Appearance & Output

Query Tool & Data Files

Unterstützte Plattformen

ProEssentials unterstützt C# .NET 8.0 (WinForms und WPF), VB.NET, MFC C++, Embarcadero Delphi, C++ Builder VCL und Excel/Access OCX-Entwicklung. Die Bereitstellung erfordert eine einzelne native DLL (PEGRP64H.DLL) neben Ihrer Anwendung. Die .NET-Wrapper-Assemblys sind als lokale NuGet-Pakete oder direkte Assembly-Referenzen verfügbar. ProEssentials x64-Assemblys werden für beste Leistung empfohlen.

Unsere Aufgabe

Ihr Erfolg ist unser höchstes Ziel, indem wir Ihrem Unternehmen und Ihren Endbenutzern den einfachsten und professionellsten Nutzen bieten.

Wir sind Ingenieure

ProEssentials wurde von professionellen Elektroingenieuren erschaffen, die ihre eigenen Charting-Komponenten benötigten. Treten Sie unserer großen Liste von Top-Engineering-Unternehmen bei, die ProEssentials einsetzen.

Danke sehr

Vielen Dank, dass Sie ein ProEssentials-Kunde sind, und vielen Dank, dass Sie die ProEssentials-Charting-Engine recherchieren.