ERLEDIGT
JA
JA
ANTWORTEN
3
3
ZUGRIFFE
807
807
EMPFEHLEN
-
Hallo,
ich will erreichen, dass meine Form1-Klasse eine Methode veröffentlicht, mit der ich in ein graphics-Object (von PictureBox1) einen Kasten zeichne. Auf diese Methode möchte ich auch außerhalb der Form1-Klasse zugreifen können.
Mein Grundgerüst sieht so aus:
Die Methode als "static" zu bezeichnen, bringt ein Kompilierungsfehler, weil nicht auf das nicht-statische Feld Form1.PictureBox1 zugegriffen werden kann.Code :1 2 3 4 5 6 7 8 9 10
public partial class Form1 : Form { ... public void drawBlock( ) { Graphics graph = PictureBox1.CreateGraphics(); graph.DrawRectangle(new Pen(Brushes.Blue, 10), 20, 20, 100, 100); } ... }
Schreibe ich noch ein this vor PictureBox1 gibt es ein Kompilierungsfehler, weil ich keine this-Referenz in einer statischen Methode benutzen darf.
Wie kann ich eine Methode, wie sie oben beschrieben wurde, realisieren?
-
05.08.07 15:19 #2
- Registriert seit
- Apr 2005
- Beiträge
- 120
Ich verstehe ehrlich gesagt das Problem nicht so ganz. Das, was du geschrieben hast, ist doch bereits die Antwort auf deine Frage. Denn die Methode statisch zu machen, scheitert daran, dass du die Klasse auf jeden Fall instanziieren musst, um eine gültige PictureBox zu bekommen.
Wenn du es so machst, wie du es geschrieben hast, kannst du die Methode auch außerhalb von Form1 aufrufen, indem du ein Form1-Objekt verwendest.
Falls dies dein Problem nicht löst, könntest du es noch etwas genauer schildern?
Gruß
PhoenixLoe
-
Danke für die Antwort, aber mittlerweile hab ich selbst eine Lösung gefunden.
Ich denke du hast das Problem auch richtig verstanden. Mir ist nur unklar gewesen, dass es die Möglichkeit gibt "Form1-Objekte" zu verwenden und wie man das praktisch umsetzt.
Hier nochmal meine Lösung:Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
public partial class Form1 : Form { ... private void frmMain_Paint( object sender, PaintEventArgs e ) { Balls.Draw(e); } ... } class Ball { ... public void Draw( PaintEventArgs e ) { Rectangle rect = new Rectangle((int)Location.X,(int)Location.Y , Measurements.Width, Measurements.Height); e.Graphics.FillRectangle(fillColor, rect); } ... }Geändert von GeHo (05.08.07 um 15:54 Uhr)
-
05.08.07 16:10 #4
- Registriert seit
- Aug 2001
- Ort
- Österreich, Stmk, Graz
- Beiträge
- 2.783
Hi.
Wenn du nur das Graphics-Objekt übergeben würdest, wäre es noch schöner. Dann kannst du dir deine Bälle auch in ein Bitmap zeichnen lassen. (z.b.)
lg, AlexWith the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
Aaron Satie
Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
Captain Jean-Luc Picard, Stardate ~41294.5
Tutorials.de chattet. Hier gibts auch .net Support ^^
Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de
(moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions
Ähnliche Themen
-
Graphics g außerhalb der Paint-Methode benutzen
Von Speedrunner im Forum JavaAntworten: 1Letzter Beitrag: 10.07.10, 11:21 -
Welche Variante um auf Oracle DB zuzugreifen
Von Templorials im Forum PHPAntworten: 5Letzter Beitrag: 23.06.08, 10:25 -
OOP - Object an Methode
Von prey im Forum PHPAntworten: 1Letzter Beitrag: 06.08.07, 22:31 -
Problem mit PDA auf lokale Datenbank zuzugreifen
Von anke31 im Forum .NET DatenverwaltungAntworten: 4Letzter Beitrag: 11.03.07, 13:28 -
paint(Graphics g, int x, in y)-Methode erneut aufrufen
Von wengi im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 09.12.03, 18:24





Zitieren

Login





