Laden...

Formulargröße automatisch anpassen

Erstellt von hongthai vor 19 Jahren Letzter Beitrag vor 19 Jahren 2.794 Views
H
hongthai Themenstarter:in
2 Beiträge seit 2004
vor 19 Jahren
Formulargröße automatisch anpassen

Hallo.
Da C# noch Neuland für mich ist, hab ich mal eine Frage.
Ich möchte in mein Formular ein Bild Reinladen. Das klappt auch noch alles. Wenn das Bild dann geladen ist, ist aber immer nur ein teil vom Bild zusehen, da das Bild größer als das Formular ist.
Jetzt wollte ich das so machen, dass sich das Formular automatisch an die Größe des Bildes anpasst.
Frage ist das möglich, wenn ja wie?

Danke schon mal

Gruß Jens

R
139 Beiträge seit 2004
vor 19 Jahren

hallo,

das hier ist komplett, du brauchst es nur noch an einen event (formload, button)
zu binden (wenn ich deine absicht richtig verstanden habe) oder in eine methode...

this.pictureBox1.Location = new System.Drawing.Point(0,0);
			pictureBox1.Image = System.Drawing.Bitmap.FromFile("C://test2.JPG");
			
			pictureBox1.Width	= (int)pictureBox1.Image.PhysicalDimension.Width;
			pictureBox1.Height	= (int)pictureBox1.Image.PhysicalDimension.Height;

			this.Width  = pictureBox1.Width+8;
			this.Height = pictureBox1.Height+27;

zu der +8 und +27 kam ich durch einige tests, den die leiste und der rahmen des formulars an sich haben auch eine gewissen "dicke" naja probiere das mal aus

gruss, r00t

posted by the real prince of persia

X
2.051 Beiträge seit 2004
vor 19 Jahren

@r00t das mit 27 und 8 ist wirklich keine gute Lösung

  1. PictureBox SizeMode Eigenschaft auf AutoSize setzen

und dann irgendwo picture laden


pictureBox1.Image = System.Drawing.Bitmap.FromFile("d:\\temp\\res2.JPG");
this.ClientSize = new Size(pictureBox1.Image.Width, pictureBox1.Image.Height);

das ist schon alles! 😉

vor allem ist dabei sicher gestellt, dass bei jeder eingestellter Titelschriftart (Dicke) und Rahmendicke richtige Größe eigestellt wird

R
139 Beiträge seit 2004
vor 19 Jahren

jo.
hab das mit +8 und +27 später hinzugefügt nachdem ich das getestet/gemerkt habe.

sollte nicht AutoSize schon im Code gesetzt werden 😉

pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize;

und das brauchst du trotzdem (so stark kannste wiederum auch nicht kürzen 😁 )

this.pictureBox1.Location = new System.Drawing.Point(0,0);

naja eigentlich sind beide "fast" identisch (vielleicht kann er ja was mit PhysicalDimension was anfangen, also würde ich es stehen lassen) 😉

posted by the real prince of persia

X
2.051 Beiträge seit 2004
vor 19 Jahren

Wenn man alles per Hand macht, kommt nur die Zeile mit AutoSize noch hinzu.

Location ist nach dem Erstellen standardmäßig auf 0;0 gesetzt.

und wenn du Designer verwendest (wovon ich ausgegangen war), kannste beides gleich dort erledigen. und dann bleiben nur die zwei Zeilen Code übrig.

Übrigens geht es noch einfacher bei der Größezuweisung:

this.ClientSize = pictureBox1.Size;

hab wohl beim ersten Beispiel noch geschlafen... 😁

...ob jemand schaft das ganze auf eine Zeile zu reduzieren?! 8o

R
139 Beiträge seit 2004
vor 19 Jahren

naja ich glaube mal hongthai hat das jetzt was er wollte 😉

posted by the real prince of persia

H
hongthai Themenstarter:in
2 Beiträge seit 2004
vor 19 Jahren

Genau. So wollte ich das.

Ich danke euch.