Punkte in Bild Zeichnen - Speichern

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von charlie883.

    Punkte in Bild Zeichnen - Speichern

    Hallo zusammen,

    ich hab mal wieder ein kleines problem. Ich Zeichen Punkte auf die Form, nun würde ich gern diese Punkte die auf der Form sind in einem Bild (jpg) speichern.
    Kann mit da jemand mal einen tipp geben wie.

    Danke
    Du kannst die Punkte auf ne Bitmap zeichnen anstatt direkt auf die Form und diese Bitmap dann als BackgroundImage der Form setzen.
    Damit kommst du zum gleichen Ergebnis und ne Bitmap kannst du auch einfach speichern.
    zeichnen kann man weder in ein Form, noch in eine Datei, noch in eine Bitmap.
    Zeichnen kann man immer nur in ein Graphics-Objekt.
    Oder wie hast du in die Form gezeichnet?

    Von Bitmap kann man auch ein Graphics abrufen, und darin kann man zeichnen.
    Das ist genau dasselbe Zeichnen, wie du derzeit "auf dein Form" zeichnest (denn du zeichnest ja nicht aufs Form, sondern in ein Graphics).

    falls du nun nicht selbst weiter kommst, dann zeigma dein Code, wie du "ins Form" zeichnest - daran kann man das aufzeigen.
    Kommt drauf an was du unter "punkte" verstehst. Wenn die nur einen Pixel groß sind, solltest du SetPixel verwenden.
    Wenn sie größer sind, DrawRectangle.
    Damit zeichnest du nicht in die Datei, sondern auf die Bitmap.
    Die Bitmap kannst du mit ihrer .Save-Methode dann als Datei speichern.

    Falls du viele solcher Punkte setzt könnten SetPixel und DrawRectangle aber auch zu langsam sein,
    dann solltest du dir LockBits ansehen. Vor allem SetPixel ist sehr langsam.
    Müsstest du einfach mal testen.

    // Edit
    Example code in C#:

    C#-Quellcode

    1. // 64x64 bitmap und graphics objekt erstellen
    2. using (var bmp = new Bitmap (64, 64))
    3. using (var gfx = Graphics.FromImage (bmp)) {
    4. // Hier die Punkte zeichnen...
    5. // Beispiel: gfx.DrawRectangle (color, x, y, width, height);
    6. // Dann die Bitmap speichern:
    7. // bmp.Save ("filename.bmp", ImageFormat.Bitmap);
    8. }


    Nur um mal ein kleines Beispiel zu geben.
    Du erzeugst eine Bitmap und ein Graphics-Object. Dem Object uebergibst du die Bitmap als Argument, dann kannst du drauf malen lassen. Zum Schluss nur noch das Bild speichern.

    VB.NET-Quellcode

    1. Using bmp As New Bitmap(100, 100)
    2. Using g As Graphics = Graphics.FromImage(bmp)
    3. 'zeichnen
    4. End Using
    5. bmp.Save("filename.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
    6. End Using

    And i think to myself... what a wonderfuL World!
    hier mal das darstellen auf der form

    VB.NET-Quellcode

    1. While reader.EndOfStream = False
    2. Dim line As String = reader.ReadLine()
    3. If line.Length > 150 Then
    4. X_String = line.Split(CChar(";"))(17).Replace(" ", "").Replace(".", ",")
    5. Y_String = line.Split(CChar(";"))(18).Replace(" ", "").Replace(".", ",")
    6. X = CLng(CDbl(X_String) + 10) * 4
    7. Y = CInt(CLng(CDbl(Y_String) + 50) * 4)
    8. End If
    9. If line.Contains(searchtext) = True Then
    10. b = New SolidBrush(Color.Red)
    11. Else
    12. b = New SolidBrush(Color.YellowGreen)
    13. End If
    14. Dim rec As Rectangle = New Rectangle(CInt(X), Y, 6, 6)
    15. g.FillRectangle(b, rec)
    16. End While