_GDIPlus_GraphicsDrawCurve ohne 'Abrundungen'

  • das schöne an der Funktion ist u.a. ... das nur ein Array übergeben werden muss ... und die Kurve wird gezeichnet - sogar recht gut und anschaulich.

    Gibt es einen Befehl, der einen einfach nur Geraden zwischen den Punkten zeichnet ... ? also ohne Abrundungen, sondern schön eckig ? Ich habe leider keinen Befehl dafür finden können.

    ... gibt es dafür auch eine Funktion ? ... dann wäre der Aufruf dafür ja ebenso einfach, oder ?

    R.Schmidt

  • Schmunke 31. Januar 2020 um 20:01

    Hat den Titel des Themas von „_GDIPlus_GraphicsDrawCurve ohne 'Kurve'“ zu „_GDIPlus_GraphicsDrawCurve ohne 'Abrundungen'“ geändert.
  • Ich würde mir einfach die gewünschte Funktion via _GDIPlus_GraphicsDrawLine selbst basteln. Wenn du das Array für DrawCurve bereits hast, kannst du via DrawLine immer Punkt [i] und Punkt [i+1] verbinden (beginnend bei 1 und endend ein Element vor dem letzten Element).

  • Mars - nachdem ich immer noch nicht richtig verstanden habe, was es mit dem _GDIPlus_GraphicsDrawPath - Befehl auf sich hat, werde ich das wohl so machen ... das war auch mein ersten Gedankengang ...

    Hintergrund : ich soll einmal einen 'schönen' Graphen zeigen ... und einmal den Graphen mit den realen Werten.

    ok - Danke erstmal

  • so ... ich habe jetzt mal die einzelnen Punkte mit dem Befehl _GDIPlus_GraphicsDrawLine verbinden lassen.

    An den jeweiligen Anfangs- und Endpunkten der Linien habe ich einen kleinen Kreis gezeichnet (im Beispiel nur alle 100 Linien; sonst sieht man nichts, da nur Kreis neben Kreis gezeichnet wird und am Ende eine dicke Linie mit der Stärke des Kreisdurchmessers zu sehen ist. Alle Linien verschwinden dadrin.)

    Vorher habe ich aber die Kurve mit dem Befehl _GDIPlus_GraphicsDrawCurve anzeigen lassen.

    Die gezeichnete Kurve mit Hilfe von _GDIPlus_GraphicsDrawCurve deckt sich mit den Einzellinien (durch _GDIPlus_GraphicsDrawLine gezeichnet)

    Was nicht passt sind die Kreise ! Eigentlich sollten die durch die Anfangs- und Endpunkte der einzelnen Linien gehen ... irgendwaie stimmt da aber was nicht ...

    Woran liegt das, das die Kreise fast immer UNTER der Linie liegen ?? Nur im schrägen Teil der Kurve passen die Kreise.

    Anbei mal nen Screenshot.

    Kennt jemand das Problem ?

  • die x,y-Koordinaten sind die gleiche, mit denen die Linien gezeichnet werden. Ich verwende ja das selbe Array (die Koordinaten liegen in einem Array).

    Das kann es also nicht sein ...

    Im Code kann man das auch so sehen, das die gleichen Koordinaten verwendet werden.

    ... außerdem - ich oberen Teil (schräger Graph) passt es doch ! ... und anschließend nicht mehr ???? hhmmmm ..


    Nee - du hast Recht ... ich sehe es gerade.

    Danke für den Hinweis.

    Einmal editiert, zuletzt von Schmunke (1. Februar 2020 um 16:47)

  • die x,y-Koordinaten sind die gleiche, mit denen die Linien gezeichnet werden. Ich verwende ja das selbe Array (die Koordinaten liegen in einem Array).


    Das kann es also nicht sein ...

    Hast du meinen Beitrag überhaupt gelesen?

    ... außerdem - ich oberen Teil (schräger Graph) passt es doch ! ... und anschließend nicht mehr ???? hhmmmm ..

    Sollte auch nicht überraschen, es sieht so aus als ob es passt, aber es passt nicht. Die Linie davor verläuft im selben Winkel, deshalb scheint es so aus als ob die Ellipse auf der Koordinate liegt, tut sie aber nicht.

  • ich habe deinen Beitrag gelesen ... die Korrektur dazu steht in den letzten beiden Zeilen meines vorletzten Posts ...

    Aber Danke für deine sehr sehr ausführliche Darstellung. Ich habs verstanden ...

    ... und ja - du hattest Recht.

    Mein Fehler war, das ich tatsächlich davon ausgegangen bin, das man den Mittelpunkt des Kreises angibt ...

  • ich habe ein weiteres Problem ...

    mit dem Befehl _GDIPlus_GraphicsDrawString kann Text auch vertikal angezeigt werden.

    Ich möchte den Text aber um 90 Grad gedreht haben ... aber eben in die andere Richtung !

    Die Zeile 385 führt den _GDIPlus_GraphicsDrawString und schreibt den Text "Kraft [N]".

    Nur müßte der Text jetzt noch um 180° gedreht werden. Leider gibt das die Funktion nicht her.

    Es gab dazu von BugFix eine Funktion : Link

    Mit dieser Funktion könnte ich das ja auch machen.

    Leider bekomme ich das ganze nicht in meiner GUI integriert (bin zu doof) ... irgendwo mach ich da was falsch.

    Wie muss ich das anpassen ? Ich denke, es muss in die Bitmap rein ... aber wie ?

    Oder kann ich das doch mit einem der _GDIPlus_Graphics... umsetzen ? ... mit welchem ?

    Danke

  • Habe mal ein Beispiel zu frei rotierbarem Text gemacht, ich hoffe das Löst dein Problem.

    Edit: Habe mir jetzt WriteRotate nicht ausprobiert, aber allgemein ist WinAPI und GDI+ nur in einigen Fällen kompatibel, im Allgemeinen greifen die Funktionen nicht ineinander. Man kann kein Rechteck via WinAPI auf ein GDI+ GFX zeichnen und kein GDI+ Rechteck auf einen usw...

    lg

    M

  • BugFix ... anteilig gelöst - ja ... Danke nochmals dafür.

    Leider verbleibt der Text nicht in der GUI wenn man das Fenster minimiert / maximiert oder ein anderes Fenster sich darüber legt.

    Deswegen bin ich gerade dabei den Bereich mit dem gedrehten Text von der GUI in die Bitmap (GDI+) zu kopieren ... hoffe ich krieg das irgendwie hin ...

    Ich schau mir mal die Lösung von Mars an und melde mich dann wieder ... aber erst heute Abend.

    Danke

    Schmunke

    • Offizieller Beitrag

    Leider verbleibt der Text nicht in der GUI wenn man das Fenster minimiert / maximiert oder ein anderes Fenster sich darüber legt.

    Stimmt, das ist ein Nachteil bei allen Zeichenoperationen mit _WinAPI_.... Da muss man die Message WM_Activate registrieren und erneut zeichnen lassen.

    EDIT: Hier mal als Bsp.

  • Stimmt, das ist ein Nachteil bei allen Zeichenoperationen mit _WinAPI_.... Da muss man die Message WM_Activate registrieren und erneut zeichnen lassen.

    das ist nicht alles. Ein MouseOver killt mir auch den Text ...

    aber sonst - sehr gut gemacht - so wollte ich das auch haben ...

    • Offizieller Beitrag

    Ein MouseOver killt mir auch den Text ...

    ?? - Das kann ich nicht reproduzieren. Ist auch nicht erklärbar, da durch MouseOver das Fenster nicht den Fokus verliert und aktiv bleibt. Oder schreibst du in einen Bereich über dem die Maus ihren Zeiger ändert?