none
schnelle Grafik mit VB.NET RRS feed

  • Frage

  • Hallo,

    ich frage mich wie ich ein altes VB6-Projekt von mir zur Darstellung von Messdaten nach VB.NET migrieren kann,

    insbesondere wie ich das Zeichnen und scrollen der Grafik realisieren kann.

    Ich lese kontinuierlich Messdaten, plotte sie in ein x-y-Diagramm welches dann immer nach links wegscrollt.

    https://ibb.co/HV1VvKC


    Dienstag, 29. Oktober 2019 13:26

Antworten

Alle Antworten

  • Hallo Matthias,

    willst Du das eher von Hand zeichnen? Oder suchst Du ein fertiges Control?

    Welches Framework willst Du verwenden? .NET Core? .NET Framework? ...?

    Welche Projektart schwebt dir vor? WPF? WinForms? UWP? Xamarin? ASP.NET? ...?


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Dienstag, 29. Oktober 2019 17:01
    Moderator
  • mit Bordmittlen wäre man natürlich unabhängig und die Messdaten zu plotten ist ja im Prinzip kein Problem, zumindest war es in VB6 so :-)

    Als Framework käme NET 2.0 aufwärts in Frage und es soll eine Windows Form Anwendung / VisualBasic NET sein die unter Windows 7 / 10 laufen soll.

    Gestern Abend habe ich noch dieses Control gefunden:

    https://www.vbarchiv.net/tipps/tipp_1611-autoredraw-eigenschaft-in-net-20-nachbauen.html

    Es funktioniert soweit.

    Jetzt müsste ich noch probieren wie ich Pixelfarben auslesen kann und wie ich die Bitmap nach links verschiebe, das hatte ich unter VB6 mit GetPixel und BitBlt gemacht...

    Mittwoch, 30. Oktober 2019 09:53
  • Hi,
    auf meiner Homepage habe ich ein Beispiel, was Deinen Anforderungen entspricht. Einem UserControl werden Werte (Arrays) übergeben, die dann als Linien-Chart dargestellt werden.

    Beispiel

    Ein anderes Beispiel stellt einen Oszillographen dar.

    Beispiel


    --
    Best Regards / Viele Grüße
    Peter Fleischer (former MVP for Developer Technologies)
    Homepage, Tipps, Tricks



    Mittwoch, 30. Oktober 2019 11:08
  • Hallo,

    das Oszillograph-Beispiel habe ich gerade ausprobiert.

    Ich denke das kann ich für meine Zwecke verwenden. Ich werde mich mal an die Umsetzung machen.

    Danke.

    Freitag, 1. November 2019 13:15
  • Hallo,

    folgender Code:

    'pb ist eine picturebox auf einem Formular:

    dim g as graphics

    With pb
                .Image = New Bitmap(.Width, .Height)
                g = Graphics.FromImage(.Image)

                g.Clear(ColorTranslator.FromOle(HintergrundFarbe))
                .Invalidate()

    End With

    'zeichnen dann mit:

    g.drawline ... ect

    pb.invalidate

    'wenn ich nun die Farbe eines Pixels auslesen will mache ich folgendes:

    Public Function GetPixelBMP(ByVal X As Int32, ByVal Y As Int32) As Int32
          Using picBitmap As Bitmap = New Bitmap(AGBox.picGrafik.Image)
                GetPixelBMP = ColorTranslator.ToOle(picBitmap.GetPixel(0, 0))
          End Using
    End Function

    Ich denke das ist ziemlich langsam, kann man das eleganter machen?

    Mittwoch, 27. November 2019 18:31