C# Image.Clone() / Bitmap.Clone()

Fou-Lu

Lt. Junior Grade
Registriert
Aug. 2006
Beiträge
290
Hallo CBler,
ich habe mich seit kurzem angefangen mit C# zu beschäftigen.

Aber irgendwie hab ich gerade ein kleines Problem...

Es ist nämlich so, dass ich ein Image/Bitmap Object mit der Clone Methode ner zweiten Variable zu weise und diese dann als Graphics Object bearbeiten will. Aber bei dem Versuch es als Graphics Object zu öffnen, kommt bei mir stets ne "OutofMemoryException". Ich hab echt schon alles probiert, aber irgendwie funktioniert das nicht.

Weiß da vielleicht jemand weiter?

PHP:
Bitmap img = (Bitmap)pic1; //pic1 ist ein Image Object deswegen der Cast

test_function(img.Clone(new Rectangle(0,0,pic1.Width, pic1.Height), pic1.PixelFormat));

Und hier die test_function:

PHP:
private Bitmap test_function(Bitmap img) {
Graphics g = Graphics.FromImage(img);

//... weiterer Code

g.Flush();
g.Dispose();

return img;
}

Der Fehler kommt übrigens bei der 1. Zeile der test_function. Wo img geladen wird ins Graphics.


EDIT: Ok aus einem mir unerfindlichen Grund kommt der Fehler jetzt nicht beim Laden ins Graphics Object, sondern schon beim Aufruf der Funktion.

EDIT: Naja ok, wenn ich Width - 1 und Height - 1 beim Rectangle angebe, dann kommt der Fehler schon beim Aufruf, wenn ich das mit -1 weglasse, dann kommts erst beim Laden ins Graphics Object.

Ich kapier aber immernoch nicht wieso??
Ergänzung ()

hat den niemand ne idee??? ich hab auch bereits probiert statt Bitmap die Image Klasse herzunehmen und dann Clone zu benutzen, aber auch das klappt nicht. Da kommt dann auch wieder die selbe Exception!!
 
Zuletzt bearbeitet:
Hallo,

ich kann Dein Problem nicht nachvollziehen.
Sowohl:
test_function(img.Clone(new Rectangle(0,0,pic1.Width, pic1.Height), pic1.PixelFormat));
als auch
test_function((Bitmap)img.Clone());
klappt hier einwandfrei und ich kann in das Bild zeichnen und die Pixel auslesen (LockBits..).
Es muss wohl am Image liegen, poste doch etwas mehr Code.
 
Zurück
Oben