Forum: PC-Programmierung VisualStudio2022, C#8, WPF, XAML Messkurven als Diagramm darstellen


von Gunnar F. (gufi36)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich soll eine Software schreiben, die Spektrogramme darstellt, so 
ähnlich wie im angehängten Bild. Dass der Hintergrund schwarz und die 
X-Achse "spektral richtig" unter der Kurve dargestellt wird, ist derzeit 
Kür, aber keine Pflicht.
Den Treiber und die Form habe ich schon zusammen. Die spektrale 
Verteilung wird mir in einem Array von 10...500 Float-Werten zurück 
gegeben.
Wer kann mir empfehlen, wie man so ein Funktionsdiagramm darstellt? 
Bisher kenne ich natürlich das Canvas, kann da reinzeichnen und Linien 
(Achsen oder Y-Balken) zeichnen. Aber wenn ich eine Achsenteilung mit 
gestrichelten Hilfslinien und Achsenbeschriftung machen will, wird das 
sehr aufwendig.
Ich habe schon viel recherchiert, noch wenig gefunden, aber das läuft 
auf freie AddOns hin, die ich irgendwo bei NuGet laden und nutzen kann.
Viele von den ganzen Tipps auf Stackoverflow sind aber schon sehr alt.
Ich hätte gerne von euch eine Empfehlung, was der Profi da heute 
verwendet?
Vielen Dank im Voraus!
Gruß Gunnar

von Franko S. (frank_s866)


Lesenswert?

Gunnar F. schrieb:
> (Achsen oder Y-Balken) zeichnen. Aber wenn ich eine Achsenteilung mit
> gestrichelten Hilfslinien und Achsenbeschriftung machen will, wird das
> sehr aufwendig.
Na wenn das schon aufwendig für dich ist, dann empfehle ich eine 
Umschulung zum Strassenkehrer.

von Martin S. (sirnails)


Lesenswert?

Gunnar F. schrieb:
> Ich hätte gerne von euch eine Empfehlung, was der Profi da heute
> verwendet?

Gibt eine ganze Palette:

https://plotly.com/csharp/
https://scottplot.net/
https://www.nuget.org/packages/QuikGraph

Selber zeichnen geht auch, ist aber zumeist wenig performant.

Franko S. schrieb:
> Na wenn das schon aufwendig für dich ist, dann empfehle ich eine
> Umschulung zum Strassenkehrer.

Cool, mein erster Kandidat für mein Greasemonkey Ignorelist Script.

von Jörg (lixtop)


Lesenswert?

Und wo ist das Problem?

Das ist als wenn Du 1, 2 oder mehrere Bitmaps in der gleichen Auflösung 
zeichnest und im Anschluß diese übereinanderlegst. Dazu braucht es doch 
keine
"freie AddOns", oder?

von Martin S. (sirnails)


Lesenswert?

Jörg schrieb:
> Das ist als wenn Du 1, 2 oder mehrere Bitmaps in der gleichen Auflösung
> zeichnest und im Anschluß diese übereinanderlegst.

Das Zeichnen ist - auf Deutsch - eine sau Arbeit und führt selten zu 
besseren Ergebnissen.

Warum das Rad ständig neu erfinden?

von Gunnar F. (gufi36)


Lesenswert?

Martin S. schrieb:
> Das Zeichnen ist - auf Deutsch - eine sau Arbeit und führt selten zu
> besseren Ergebnissen.

Vielen Dank, Martin!
Die Pakete sehe ich mir gerne mal an, bin gespannt.

@Franko
Ich habe schon vor 30 Jahren unter QBasic Graphen programmiert. Und da 
die Textelemente in vertikaler Ausrichtung, gestrichelte Linien im 
Hauptraster, kleine Tags im Unterraster, das war schon eine Viecherei. 
Das ganze in einem Canvas, dessen tatsächlichen Ausmaße sich permanent 
ändern können, also dauernd Systemkoordinaten in lokale Koordinaten 
umrechnen, auf Ereignisse reagieren... Puh..
Freut mich aber, auch von einem solchen Profi wie Dir was lernen zu 
dürfen!

von Bertram S. (bschall)


Angehängte Dateien:

Lesenswert?

Alternativ ein Polygon ins Canvas und die Füllung als 
LinearGradientBrush ausführen. Könnte überschaubarer sein als einzelne 
Linien.
So es Achsen usw. braucht eventuell auf eine Lib zurückgreifen

von Bertram S. (bschall)


Angehängte Dateien:

Lesenswert?

Alternativ ein Polygon ins Canvas und die Füllung als
LinearGradientBrush ausführen. Könnte überschaubarer sein als einzelne
Linien.
So es Achsen usw. braucht eventuell auf eine Lib zurückgreifen

von Bertram S. (bschall)


Angehängte Dateien:

Lesenswert?

Alternativ ein Polygon ins Canvas und die Füllung als
LinearGradientBrush ausführen. Könnte überschaubarer sein als einzelne
Linien.
So es Achsen usw. braucht eventuell auf eine Lib zurückgreifen

von Gunnar F. (gufi36)


Lesenswert?

Bertram S. schrieb:
> Alternativ ein Polygon ins Canvas und die Füllung als
> LinearGradientBrush ausführen. Könnte überschaubarer sein als einzelne
> Linien.
> So es Achsen usw. braucht eventuell auf eine Lib zurückgreifen

Hallo Bertram, ganz herzlichen Dank! Das ist super nahe an meiner 
Wunschvorstellung! Mit solcher Hilfe schaffe ich noch eine kometenhafte 
Karriere.... auf meine alten Tage!

von Franko S. (frank_s866)


Lesenswert?

Martin S. schrieb:
> Cool, mein erster Kandidat für mein Greasemonkey Ignorelist Script.

Wen interessiert das?

von Gunnar F. (gufi36)


Lesenswert?

Franko S. schrieb:
> Martin S. schrieb:
>> Cool, mein erster Kandidat für mein Greasemonkey Ignorelist Script.
>
> Wen interessiert das?

Mich. Wenn ich so eine Liste hätte, Platz 1 ist dir sicher!

von Franko S. (frank_s866)


Lesenswert?

Gunnar F. schrieb:
> Mich. Wenn ich so eine Liste hätte, Platz 1 ist dir sicher!
Du brauchst also andere dazu was auf deinen Filter kommen soll?
Einen Schulabschluss hast du vermutlicht nicht oder?

von Martin S. (sirnails)


Angehängte Dateien:

Lesenswert?

Gunnar F. schrieb:
> Franko S. schrieb:
>> Martin S. schrieb:
>>> Cool, mein erster Kandidat für mein Greasemonkey Ignorelist Script.
>>
>> Wen interessiert das?
>
> Mich. Wenn ich so eine Liste hätte, Platz 1 ist dir sicher!

Bin mir noch nicht ganz sicher, ob ich das so lasse. Einerseits wäre mir 
sympatisch, den Beitrag einfach komplett wegzuexen, auf der anderen 
Seite kann das Gespräche aus dem Zusammenhang reißen.

Aktuell arbeitet das Script auch noch mit User-IDs. Ich hatte bisher 
noch keine Motivation, das auf Namen umzustellen. Wenn ich damit 
zufrieden bin, poste ich es mal in den Offtopic.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.