Ellipse bei start zeichnen

Jacizzle

Mitglied
Hallöchen...

Ich habe vor 1 - 2 Tagen angefangen mir mal CSharp anzugucken, weil mans ja heute immer besser gebrauchen kann ;o) bzw. ich auch vor habe mal etwas mit meinem pocket pc rumzuspielen.

Wird wahrscheinlich eine doofe Frage sein, aber da ich mich noch nicht soooviel mit CSharp auskenne muß ich das einfach mal fragen:

Ich wollte direkt beim start von dem WindowsForm eine Ellispe zeichnen, kann mir evt. einer mal nen Beispiel geben wie man das macht? bzw. wie man eine ellipse zeichnet habe ich ja schon rausgefunden, aber wo man die reintut damit die direkt beim start angezeigt wird funktioniert noch nicht so ganz...

Habe schon nen paar Varianten ausprobiert, funktionierte aber leider alles nicht..

Danke im vorraus ...
 
Hallo Jacizzle!

Das Form.Layout-Event wird ausgeführt wenn das Form das erste mal angezeigt wird.
Jedoch nicht nur einmal. Daher musst noch ein Flag zu Hilfe nehmen damit der Code
dann auch nur einmal ausgefürht wird.
//Edit Der komplette Code steht jetzt im [post=1227127]8. Post[/post]

MfG, cosmo
 
Zuletzt bearbeitet:
Erstmal danke dir für die Hilfe.. jedoch kommt bei mir ständig ein Fehler wenn ich versuche den Code einzubinden. Der sagt mir ganze Zeit in deinem Code Zeile 2. das er ein "}" erwartet... Wofür steht genau der übergabeparameter in der fkt? also this.MainForm_Layout .. Ich habe da jetzt Hauptfenster_Layout reingeschrieben, denke ja mal das das so gemeint war, oder?
 
Ja da hast recht. Ich habs einmal englisch und deutsch geschrieben gehabt. :-(
Es war gestern kurz vor Arbeitsschluss, hatte ich kaum Zeit zum posten,
daher die Irreführung, sorry. :)

Abboniere das Event innerhalb von InitializeComponent().
Schreib es ganz am Schluss hinein. Ungefähr so.
//Edit Der komplette Code steht jetzt im [post=1227127]8. Post[/post]

MfG, cosmo
 
Zuletzt bearbeitet:
Okay, ich habe den Fehler weggekriegt.. habe nen Fehler mit der Funktion gehabt...

Nun habe ich aber das Problem, das die Funktion (laut "Einzelschritt"-Debugger) nicht aufgerufen wird.. der Code sieht nun bei mir so aus:

Code:
this.Name = "Form1";
this.Text = "Form1";
this.Layout += new System.Windows.Forms.LayoutEventHandler(this.Form1_Layout);
this.ResumeLayout(false);

Die Zeile mit dem Layout habe ich bei der fkt: InitializeComponent. beigepackt. die funktion unter der Main funktion...

Warum wird die nun nicht aufgerufen?
 
Warum wird die nun nicht aufgerufen?
Weil Du warscheinlich im [thread=226248]Relesase Mode[/thread] bist. :confused:
this.Form1_Layout existiert ja wenn er Dir keine Exception in
InitializeComponent() wirft.
Ansonsten hast schonmal ein gutes Gespür gehabt, wo die Eventabonierung hin muss. :)
 
cosmochaosmaker hat gesagt.:
Ja da hast recht. Ich habs einmal englisch und deutsch geschrieben gehabt. :-(
Es war gestern kurz vor Arbeitsschluss, hatte ich kaum Zeit zum posten,
daher die Irreführung, sorry. :)

Abboniere das Event innerhalb von InitializeComponent().
Schreib es ganz am Schluss hinein. Ungefähr so.

MfG, cosmo

Cosmo du Frosch... Der Code ist voll fürn ***** wenn du deine Flag variable nicht setzt ;)

Richtig wäre :

Code:
void InitializeComponent() {    this.SuspendLayout(false);    // Component initialisations    this.Layout += new System.Windows.Forms.LayoutEventHandler(this.MainForm_Layout);    this.ResumeLayout(false);} bool layoutCalled = false; void MainForm_Layout( object sender, LayoutEventArgs e ) {    if ( layoutCalled == false ) // Sicherstellen das der Code nur einmal ausgefürht wird.        {drawEllipse();    layoutCalled = true;}}

:suspekt: :rolleyes: :suspekt::rolleyes: :suspekt:

lg

MFC OpenGL ;)


Man, das Forum sollte man entweder auf einmal ändern oder garnicht, so ein Scheiss mit dem Code einfügen, schaut euch den schrott an... ne ne ne
 
Zuletzt bearbeitet:
WTF? o.0 :-(

//Edit Der komplette Code steht jetzt im [post=1227171]12. Post[/post]

Ich hab im Moment 3 Dinge gleichzeitig um die Ohren.
Sollt vielleicht mal Urlaub machen... :D

@Darki: layoutCalled = true; muss aber als erstes gesetzt werden. :p
 
Zuletzt bearbeitet:
cosmochaosmaker hat gesagt.:
WTF? o.0 :-(

Ich hab im Moment 3 Dinge gleichzeitig um die Ohren.
Sollt vielleicht mal Urlaub machen... :D

@Darki: layoutCalled = true; muss aber als erstes gesetzt werden. :p

Mach echt mal Urlaub, cosmo ;)

Das muss garnicht als erstes gesetzt werden, und das ist auch nicht klug das zuerst zu setzen ! Ganz einfach weil ja normalerweise noch abgefangen werden müsste ob das Zeichnen geklappt hat und nur dann (also DANACH) erst das Flag gesetzt werden sollte ;)

Ich gönne mir gerade nen paar Minuten auszeit... solltest du auch mal tun *g*

Gruss

Darki
 
Auch nen Anwendungsentwickler oder wad? :-D Dann danke ich dir ja schonmal das du dir Zeit nimmst...

Meine Ellipse zeichnet der aber immernoch nicht :eek:( Ich glaube das liegt an dem Beispielcode von der Ellipse die ich zeichnen will.
Den Code hab ich aus der VB.Net hilfe kopiert, eig. nur zum Test ob das funktioniert.Wenn ich den Code in nen Button Klick Event hinterlege und ich den button drücke zeichnet der mir auch den Kreis, aber nicht beim Start des Formulars. Könntest du mir evt. erklären warum das so ist?
Man man man, ist doch garnichtmal so einfach wenn man schon ewig kein C mehr programmiert hat und die ganze Zeit VB gemacht hat wieder umzusteigen auf C# :p

Code:
layoutCalled = true;        
System.Drawing.SolidBrush myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Red);
System.Drawing.Graphics formGraphics = this.CreateGraphics();
formGraphics.FillEllipse(myBrush, new Rectangle(0,0,200,300));
myBrush.Dispose();
formGraphics.Dispose();
 
Zurück