Entwickler-Ecke
WinForms - Bilder zeichnen
sharpx - Do 08.01.09 12:34
Titel: Bilder zeichnen
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| void Button1Click(object sender, EventArgs e) { StreamReader sr = new StreamReader("pc.jpg"); Bitmap bild = new Bitmap(sr.BaseStream); sr.Close(); pb.Image = bild; pb.SizeMode= PictureBoxSizeMode.AutoSize; } |
Kann mir einer sagen wie ich jetzt z.b. das bild auf den koordinaten x=120 und y=200 positioniere?
Oder hat wer ein gutes Tutorial hier für?
Danke schon mals
JüTho - Do 08.01.09 12:42
So langsam vergeht mir die Lust, Dir zu antworten.
| Zitat: |
| Kann mir einer sagen wie ich jetzt z.b. das bild auf den koordinaten x=120 und y=200 positioniere? |
Das klingt, als wenn Du die Bitmap
innerhalb der PictureBox positionieren willst. Das geht so überhaupt nicht, wie aus der
SDK-Doku/MSDN zu erkennen ist: Es gibt keine Eigenschaft der
PictureBox, die eine solche Position verwendet; aber das von Dir verwendete
SizeMode steuert genau das, und nur diese Möglichkeit hast Du.
Wenn Du aber die PictureBox im Formular positionieren willst, dann hat das nichts mit dem gezeigten Code zu tun. Schau in die Designer.cs, wie das geht.
Jürgen
PS. Der Titel "Bilder zeichnen" wäre etwas ganz anderes, siehe Paint-Ereignis. Du willst ein Bild
anzeigen.
PS 2. Ich brauche zum Laden einer Datei nur eine Zeile, nicht drei:
C#-Quelltext
1:
| Bitmap bild = new Bitmap("pc.jpg"); |
Auch dafür ist die
SDK-Doku/MSDN hervorragend geeignet, nämlich um bessere Alternativen zu finden.
sharpx - Do 08.01.09 12:57
okay wie kann ich die picture box positionieren?
erklär mal, y0!
Moderiert von
Christian S.: Beiträge zusammenfasst
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| PictureBox pb = new PictureBox(); pb.Height=100; pb.Width=100; pb.Top = 100; pb.Left = 100; pb.Image=Image.FromFile("pc.jpg"); this.Controls.Add(pb); |
passt das? y0!
Moderiert von
Christian S.: Beiträge zusammengefastt
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| void pb_click(object sender, EventArgs e) { MessageBox.Show("bam"); } void Button1Click(object sender, EventArgs e) { PictureBox pb = new PictureBox(); pb.Height=100; pb.Width=100; pb.Top = 100; pb.Left = 100; pb.Image=Image.FromFile("pc.jpg"); this.Controls.Add(pb); } |
Warum geht das nicht?
Sollte doch passen oder?
Moderiert von
Christian S.: Beiträge zusammengefasst
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| void pb_click(object sender, EventArgs e) { MessageBox.Show("bam"); } void Button1Click(object sender, EventArgs e) { PictureBox pb = new PictureBox(); pb.Height=100; pb.Width=100; pb.Top = 100; pb.Left = 100; pb.Image=Image.FromFile("pc.jpg"); this.pb.Click += new System.EventHandler(this.pb_click); this.Controls.Add(pb); } |
Habs auch mti nem eventhandler versucht.
geht auch nicht.
soltle das net passen?
JüTho - Do 08.01.09 13:35
In allen diesen Varianten ist pb eine
neue lokale Variable innerhalb der betreffenden Methode. Dazu habe ich schon
hier [
http://www.c-sharp-forum.de/viewtopic.php?p=543361#543361] geschrieben:
| Zitat: |
| Seltsam kommt mir vor, dass Du in der xxx-Methode die yyy neu deklarierst und erzeugst und durch Übergabe als zzz willst, dass sie auch danach noch existiert. Das würde ich auf jeden Fall vermeiden; wenn die yyy im Formular insgesamt benötigt wird (nämlich als zzz), sollte sie auch dort deklariert und erstellt werden. Nur das Zuweisen ... würde in die xxx-Methode passen. |
Wenn Du aber eine
schon vorhandene PictureBox neu positionieren willst, dann musst Du doch nur Left/Top neu zuweisen und (damit es sofort sichtbar wird, wenn das noch nicht genügt) Refresh oder Invalidate aufrufen.
Was soll eigentlich PictureBox.Click? Das hat doch nichts mit der Positionierung der PictureBox zu tun, sondern sorgt dafür, dass das System künftig auf ein Klicken auf diese PictureBox reagiert. Du willst im Button-Click eine (vermutlich die vorhandene) PictureBox anders positionieren als bisher; dann beschränke Dich doch darauf.
Hast Du Dich inzwischen mit den Grundlagen von Ereignissen beschäftigt? Da habe ich noch Zweifel, siehe z.B.
OpenBook Kap.13 ff. [
http://openbook.galileocomputing.de/visual_csharp/].
Jürgen
sharpx - Do 08.01.09 13:39
Nein ich hatte REcht.
Der einzige Fehler war das
C#-Quelltext
1:
| this.pb.Click += new System.EventHandler(this.pb_click); |
welches ich durch
C#-Quelltext
1:
| pb.Click += new System.EventHandler(pb_click); |
ersetzt habe.
Klickt man nun auf die Picture Box, kommt auch die MsgBox :=)
JüTho - Do 08.01.09 13:44
sharpx hat folgendes geschrieben : |
| Nein ich hatte REcht. |
Wie schön für Dich. Und wodurch ist dieser Fehler entstanden? Durch unpassende Verwendung der Variablen pb. (Dieses Problem mit falschem this gab es vor wenigen Tagen schon einmal.) Jürgen
miniC# - Do 08.01.09 15:21
du lausbub ohne manieren ! *mitm finger wedel*
sharpx - Do 08.01.09 16:43
miniC# hat folgendes geschrieben : |
| du lausbub ohne manieren ! *mitm finger wedel* |
lol? :D
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!