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
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
@r00t das mit 27 und 8 ist wirklich keine gute Lösung
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
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
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
naja ich glaube mal hongthai hat das jetzt was er wollte 😉
posted by the real prince of persia