Picturebox - Bild wird doppelt angezeigt

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    Picturebox - Bild wird doppelt angezeigt

    Dieser Code:

    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As EventArgs) Handles MyBase.Load
    2. Dateiname = "C:\Test\Testbild_quer.jpg"
    3. jpg = Image.FromFile(Dateiname)
    4. jpgZoom = New Bitmap(jpg)
    5. PictureBox1.SizeMode = PictureBoxSizeMode.Normal
    6. Using g As Graphics = Graphics.FromImage(jpgZoom)
    7. g.DrawImage(jpgZoom, 200, 200, 100, 100)
    8. End Using
    9. PictureBox1.Image = jpgZoom
    10. End Sub


    führt zu diesem Ergebnis:


    Ich hätte aber gerne das kleine Bild (Mitte) ohne das Original dahinter.

    Hat jemand eine Idee, was ich falsch mache?
    @GRRRRRD Wenn Du außerdem die Zwischen-Variablen rausnimmst kommst Du zu nem 3-Zeiler:

    VB.NET-Quellcode

    1. Dim Dateiname = "C:\Test\Testbild_quer.jpg"
    2. PictureBox1.SizeMode = PictureBoxSizeMode.Normal
    3. PictureBox1.Image = Image.FromFile(Dateiname)
    Den SizeMode kannste auch im Designer zuweisen.
    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!
    @GRRRRRD Dann geht das so, ohne Form_Load():

    VB.NET-Quellcode

    1. Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint
    2. ' hier wird die PictureBox bemalt
    3. Dim Dateiname = "C:\Temp\Image 404.jpg"
    4. Dim jpgZoom = New Bitmap(Dateiname)
    5. e.Graphics.DrawImage(jpgZoom, 100, 100, 100, 100)
    6. End Sub
    Das System teilt der PictureBox initial automatisch mit, dass sie sich darstellen soll.
    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!

    ErfinderDesRades schrieb:

    NoGo
    Ist korrekt, ich habe lediglich die vorhandenen Codezeilen in die richtige Prozedur geschrieben.
    Allerdings hält das System dann die Datei im Cache, so dass das nicht zu lange dauert, was natürlich keine Ausrede ist.
    @GRRRRRD hat da schon noch sehr viel zu lernen.
    Also hier eine bessere Lösung:

    VB.NET-Quellcode

    1. Private jpgZoom As Bitmap
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As EventArgs) Handles MyBase.Load
    3. Dim Dateiname = "C:\Test\Testbild_quer.jpg"
    4. Me.jpgZoom = New Bitmap(Dateiname)
    5. 'Me.PictureBox1.SizeMode = PictureBoxSizeMode.Normal ' => Designer
    6. End Sub
    7. Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint
    8. ' hier wird die PictureBox bemalt
    9. e.Graphics.DrawImage(Me.jpgZoom, 100, 100, 100, 100)
    10. End Sub
    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!