Problem mit Bitmap (2 Bilder in einem Abspeichern)

  • VB.NET
  • .NET (FX) 4.0

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Problem mit Bitmap (2 Bilder in einem Abspeichern)

    Hay,
    habe folgendes Problem:
    Habe ein Tool für einen bekannten gemacht bzw bin gerade dabei, nun das Einlesen der Bilder scheint normal zu Funktionieren, das Abspeichern auch.
    Wenn ich anschließend die Bilder aber vergleiche schaut das neue Bild mit "kleinem Logo" drin aber Grösser aus wie das Einzelne davor Original.
    Genaue Funktion des Programmes:
    Bild1 = Selber auswählen via OpenFileDialog
    Bild2 = Vordefinierte Logos mit Transparentem Hintergrund für Wasserzeichen Einbindung unten Rechts.

    Diese sollen nun verschmelzen und in einem neuen Bild abgespeichert werden.

    Quellcode

    1. Private Sub btnVorschau_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVorschau.Click
    2. On Error GoTo Fehler
    3. Dim FInfo As New FileInfo(txtBilddatei.Text)
    4. Dim Img As Image = Image.FromFile(FInfo.FullName)
    5. Dim Breite As Integer = Img.Width
    6. Dim Hoehe As Integer = Img.Height
    7. Dim imgPicture_Temp As New Bitmap(txtBilddatei.Text)
    8. Dim img_Black As New Bitmap(My.Application.Info.DirectoryPath & "\logo_black.png")
    9. Dim img_White As New Bitmap(My.Application.Info.DirectoryPath & "\logo_white.png")
    10. Dim imgFull_Picture As New Bitmap(Breite, Hoehe)
    11. Dim g As Graphics = Graphics.FromImage(Img)
    12. g.DrawImage(imgPicture_Temp, New Point(0, 0))
    13. If rbtn_black.Checked = True Then
    14. g.DrawImage(img_Black, New Point(Breite - 165, Hoehe - 140))
    15. ElseIf rbtn_white.Checked = True Then
    16. g.DrawImage(img_White, New Point(Breite - 165, Hoehe - 140))
    17. End If
    18. g.Dispose()
    19. g = Nothing
    20. imgPicture.Image = imgFull_Picture
    21. Exit Sub
    22. Fehler:
    23. MsgBox("Es ist ein Fehler Aufgetreten. Bitte Überprüfen ob es sich wirklich um eine Bilddatei handelt!" & vbCrLf & "Datei: " & txtBilddatei.Text, MsgBoxStyle.Critical)
    24. End Sub
    25. Private Sub btnSpeichern_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSpeichern.Click
    26. SaveFileDialog1.FileName = OpenFileDialog1.FileName
    27. If SaveFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
    28. imgPicture.Image.Save(SaveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Png)
    29. End If
    30. End Sub


    Was mache ich Falsch?
    Sorry, aber dein Quellcode tut -zumindest mir- in den Augen weh... X/

    Schau dir mal bitte folgendes an, und refactore den mal (nicht nur den Ausschnitt, sondern am besten dein ganzes Programm, siehe On Error GoTo Fehler), da verschwindet eventuell das ein oder andere Problem von ganz alleine :whistling:

    Böses aus VB6/VB2003 - und die richtigen VB.NET-Alternativen
    Wie füge ich Quellcode korrekt im Forum ein?

    Und zu deinem Problem: Schau mal, welcher SizeMode bei deiner PictureBox angegeben ist.

    hasexxl1988 schrieb:

    Was mache ich Falsch?
    Eigentlich nix, nur etwas viel Code und die leidige On Error Goto-Anweisung.
    Dieser Code macht bei mir das, was er soll.

    VB.NET-Quellcode

    1. Dim Img As Image = New Bitmap(txtBilddatei.Text)
    2. Dim Breite As Integer = Img.Width
    3. Dim Hoehe As Integer = Img.Height
    4. Using g As Graphics = Graphics.FromImage(Img)
    5. If rbtn_black.Checked = True Then
    6. Dim img_Black As New Bitmap("c:\Temp\logo_black.png")
    7. g.DrawImage(img_Black, New Point(Breite - 165, Hoehe - 140))
    8. ElseIf rbtn_white.Checked = True Then
    9. Dim img_White As New Bitmap("c:\Temp\logo_white.png")
    10. g.DrawImage(img_White, New Point(Breite - 165, Hoehe - 140))
    11. End If
    12. End Using
    13. imgPicture.Image = Img
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!