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