Image Object verändert sich, obwohl es nicht aufgerufen wird!



  • Hallo ich hab ein Problem!!!!!

    Es geht darum, dass ich mit einer Trackbar mit

    DrawRectangle
    

    einen Roten Kasten in einem Image Object mit einem Grafik object zeichne:

    Private Sub TrackBar_SeitenrandScroll(sender As System.Object, e As System.EventArgs)
    
    					Rand=TrackBar_Seitenrand.Value
    
    					Label_Rand.Text=Rand
    
    					Dim temp_img As System.Drawing.Image
    
    					temp_img=RawImage
    
    					Dim rect As Graphics = Graphics.FromImage(temp_img)
    
    					Dim r As Rectangle
    					r = New Rectangle(TrackBar_Seitenrand.Value,TrackBar_Seitenrand.Value,PictureBox_Vorschau.Width-(2*TrackBar_Seitenrand.Value)-1,PictureBox_Vorschau.Height-(2*TrackBar_Seitenrand.Value)-1)
    
    					Dim p As Pen
    					p = New Pen(System.Drawing.Color.Red, 1)
    
    		    		rect.DrawRectangle(p,r)
    
    		    		PictureBox_Vorschau.Image=temp_img
    
    				End Sub
    

    RawImage wird nur einmal bei der Initialisierung festgelegt und sonst nirgends aufgerufen.

    Das problem besteht darin, dass wenn ich das nächste mal die Trackbar bewege, ich dir roten Kästen vom vorherigen mal sehe.

    Es sieht also so aus, als wenn "RawImage" geändert wird. Ich verstehe aber nicht, warum.

    Vielen Dank, Christoph



  • Du machst zwar das und denkst es ist eine eigenständige Kopie

    temp_img=RawImage
    

    aber im .NET wird mit Referenzobjekten gearbeitet!

    Dann lässt Du dir den Grafikkontext von diesen vermeintlich temporären Objekt geben per Graphics.FromImage(temp_img) aber in Wirklichkeit, arbeitest Du mit dem Image was dem ImageObjekt gehört. Deshalb sihst Du auch diese Kästchen.
    Zumal Du nachdem Du drinrummalst der Picturebox die neue Malerei auch zuweist!

    PictureBox_Vorschau.Image=temp_img
    

    Und der PictureBox ist es eigen das sie das Bild was Sie bekommt auch gleich anzeigt.

    Alles klar


Anmelden zum Antworten