tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
807
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von GeHo
    GeHo GeHo ist offline Mitglied Gold
    Registriert seit
    May 2004
    Beiträge
    133
    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:
    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);
        }
      ...
    }
    Die Methode als "static" zu bezeichnen, bringt ein Kompilierungsfehler, weil nicht auf das nicht-statische Feld Form1.PictureBox1 zugegriffen werden kann.
    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?
     

  2. #2
    PhoenixLoe PhoenixLoe ist offline Mitglied Gold
    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
     

  3. #3
    Avatar von GeHo
    GeHo GeHo ist offline Mitglied Gold
    Registriert seit
    May 2004
    Beiträge
    133
    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)
     

  4. #4
    Avatar von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel
    tutorials.de Administrator
    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, Alex
     
    With 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

  1. Graphics g außerhalb der Paint-Methode benutzen
    Von Speedrunner im Forum Java
    Antworten: 1
    Letzter Beitrag: 10.07.10, 11:21
  2. Welche Variante um auf Oracle DB zuzugreifen
    Von Templorials im Forum PHP
    Antworten: 5
    Letzter Beitrag: 23.06.08, 10:25
  3. OOP - Object an Methode
    Von prey im Forum PHP
    Antworten: 1
    Letzter Beitrag: 06.08.07, 22:31
  4. Problem mit PDA auf lokale Datenbank zuzugreifen
    Von anke31 im Forum .NET Datenverwaltung
    Antworten: 4
    Letzter Beitrag: 11.03.07, 13:28
  5. paint(Graphics g, int x, in y)-Methode erneut aufrufen
    Von wengi im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 09.12.03, 18:24