[C#] pictureBox in Registry speichern und laden

DasBöse

Mitglied
Mein Programm liest bei einem Klick auf einen Button aus der .exe das Icon aus und schreibt es in die pictureBox nur da gibt es noch ein paar sachen die nicht so schön sind und das bild wird nicht gespeichert:

1. Wie kann ich in einer PictureBox das Bild in der Mitte anzeigen lassen? Weil zur Zeit wird das Bild immer in die Links obere Ecke geladen.

2. Ich habe eine Speicherfunktion in mein Programm eingebaut. Dieses läuft über die Registry. Zum Beispiel speichere und lade ich ein Label so:

C#:
Speichern()

	if (this.label1.Visible == true)
            {
                regKey.SetValue("Label1", label1.Text);
            }

C#:
Laden()
           	 if (label1.Text == (string)regKey.GetValue("Label1", ""))
            {
                label1.Text = (string)regKey.GetValue("Label1", "");
                label1.Visible = true;
            }

das funktioniert auch!
wie mache ich das jetzt bei pictureBox?
wenn ich das an Beispiel des Labels mache:

C#:
Speichern()
if (this.pictureBox1.Image != null)
            {
                regKey.SetValue("PictureBox1", pictureBox1.Image);
            }

dabei wird aber (das habe ich schon nachgeschaut) nur System.Drawing.Bitmap in die Registry geschrieben. Aber eigentlich müsste dort der Pfad des Bildes stehen oder?

Und beim Laden komm ich gar nicht weiter da ich nicht weiß welchen Dateityp ich hernehmen soll:

C#:
Laden()

         	if (pictureBox1.Image (?)regKey.GetValue(?, );
            {
                pictureBox1.Visible = true;
            }

Ich hoffe jemand weiß Rat.

mFg
 
Zuletzt bearbeitet von einem Moderator:
Zu aller erst finde ich es persönlich nicht gut wenn Programme ihre Einstellungen in der Registry speichern. Anyway.

Punkt1:
Code:
pictureBox1.ImageLocation = @"C:\Dokumente und Einstellungen\GrossK\Eigene Dateien\Eigene Datenquellen\FOLDER.ICO";
//Bild in der Mitte
pictureBox1.SizeMode = PictureBoxSizeMode.CenterImage;

Punkt2:
Code:
//Ausgabe des Bildpfades
MessageBox.Show(pictureBox1.ImageLocation);
 
Ok ob der User das in der Registry speichert bleibt ja ihm überlassen ;)

1. Das funktioniert Dankeschön!

2. Versteh ich nicht so ganz was du damit meinst. Ich habe mir das als erstes so gedacht das vielleicht in der MessageBox der Pfad vom Icon angezigt wird. Leider steht aber in der MessagebBox wenn ich sie in meinen Code einbinde nichts drin. Ich hoffe man kann das überhaupt.

Fällt dir(euch) noch was ein wie man die pictureBox speichern könnte?

mFg
 
Ja, also für den Punkt 2 musst du bereits das Bild auch der ImageLocation übergeben siehe Beispiel Punkt 1. Dann hast du auch deinen kompletten Pfad, den du speichern bzw. laden kannst.
 
Hmm das wär natürlich blöd da ich das Image über ein bmp hole und dieses gibt keinen string zurück:

C#:
Bitmap bmp;
                bmp = myIcon.ToBitmap();
                this.pictureBox1.Image = bmp;
                this.pictureBox1.SizeMode = PictureBoxSizeMode.CenterImage;

ja gut dann würde sich das Laden vereinfachen aber leider kann/darf ich das nicht so machen (Chef).

Geht das auch ohne ImageLocation?

mFg
 
Zuletzt bearbeitet von einem Moderator:
Achso, ok dann musst du wohl wenn du das Icon aus der *.exe Datei einliest, den Pfad den du dadurch erhälst, in einer Variable "zwischenspeichern" und diese dann zum Speichern nutzen. Das würde mir jetzt als erstes einfallen.
 
ja aber wie lese ich den aus ich habe ja schon versucht am beispiel "label" das auch mit picturbeox zu machen erhalte dann aber nur "system.drawing.bitmap" und nicht den pfad.

wie stellst du dir das vor?

mFg
 
Ich hab dir in einem anderen Thread ja eine Seite gezeigt womit du das Icon auslesen kannst. Da gibts eine Variable die fName heißt diese beinhaltet den Pfad zu dem Icon. Das einfachste was du machen kannst, ist diesen String zu speichern und beim Laden den String der Funktion übergeben. Alles andere macht ja der Code :)
 
Zurück