[c#]Grafiken erstellen

Zacha

Grünschnabel
Als Neuling hänge ich gerade noch an sehr einfachen Grundlagen. Was ich eigentlich erstellen will ist ein recht einfaches Programm, dass mir zunächst mal Daten aus einer Datei grafisch darstellen soll. Dafür versuche ich gerade, erst mal Linien überhaupt zu zeichnen. Hier scheitere ich jedoch schon. Folgenden Code habe ich mal trivial kopiert aus der Hilfe (ms-help://MS.VSCC.v90/MS.msdnexpress.v90.de/dv_csexpresscon/html/085a0b18-2ed4-49b2-ad82-4d28ae2af3f3.htm) in die Form1-Form eines neuen Form-Awnednungs-Projekts. Wenn ich das richitg verstehe sollte es mr eine rote Linie quer zeichnen in meine Form wenn ich per F5 das Programm mal starte. Leider zeichnet es gar nichts, die Form bleibt leer, und mir wird einfach nicht klar woran es liegen könnte.


Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class formGraphics : Form
    {
        public formGraphics()
        {
            InitializeComponent();
            System.Drawing.Pen myPen;
            myPen = new System.Drawing.Pen(System.Drawing.Color.Red);
            System.Drawing.Graphics formGraphics = this.CreateGraphics();
            formGraphics.DrawLine(myPen, 0, 0, 200, 200);
            myPen.Dispose();
            formGraphics.Dispose();

        }
 

Zacha

Grünschnabel
Danke für die schnelle Antwort, aber ich bin ein totaler No*b und ehrlich gesagt hilft mir diese Antwort kein Jota weiter.
 

Cromon

Erfahrenes Mitglied
Zeichenaktionen können nur zwischen BeginPaint und EndPaint durchgeführt werden. Du musst also beim Event Paint deine Funktion eintragen und da drin dann zeichnen.
 

Zacha

Grünschnabel
Ok,, Paint event, "Occurs when the control is redrawn", klingt schickt. Rein konzeptuell glaube ich das auch zu verstehen. Aber umsetzen kann ich das nicht. Ich habe keine Ahnung wo BeginPaint / EndPaint zu finden sind bzw. wo ich diese ergänzen müsste. Ich kann auch nichts sinnvolles dazu finden.

Ich komm mir grad ewas blöd vor, tut mir Leid, aber bitte erklärt es so das es ein Neuling verstehen und umsettzen kann.
 

Cromon

Erfahrenes Mitglied
Mit BeginPaint und EndPaint musst du ja auch nichts machen, das war nur zur Erläuterung. Du musst nur deine Zeichenaktionen in der Funktion für das Event Paint durchführen.
 

Zacha

Grünschnabel
"Du musst nur deine Zeichenaktionen in der Funktion für das Event Paint durchführen."
Ich versuche es mal zu erklären: Ich vermute, das miene "Zeichenaktion" das
Code:
System.Drawing.Pen myPen;
            myPen = new System.Drawing.Pen(System.Drawing.Color.Red);
            System.Drawing.Graphics formGraphics = this.CreateGraphics();
            formGraphics.DrawLine(myPen, 0, 0, 200, 200);
            myPen.Dispose();
            formGraphics.Dispose();
ist. Ich weiß es aber nicht, ob es wirklich das ist was du meinst. Aber welche Funktion? Wo ist irgendein event "Paint" definiert? Ich weiß nicht wie ich Euch das erklären soll, aber mir sagen diese Begrifflichkeiten einfach nicht genug um mit dieser Form von Antworten wirklich was anfangen zu können.

Ich habe mir in der Hilfe angesehen, wie man so die ersten Form- und Consolen-Anwendungen erstellt, habe das alles nachvollzogen, und suchte dann nach einer Möglichkeit erst mal eine einfache Grafik zu zeichnen. Dafür habe ich "ms-help://MS.VSCC.v90/MS.msdnexpress.v90.de/dv_csexpresscon/html/085a0b18-2ed4-49b2-ad82-4d28ae2af3f3.htm" gefunden. Dort stand der obige Code, mit dem Vermerk
"Kompilieren des Codes
Für dieses Beispiel benötigen Sie:

Ein Windows Forms-Anwendungsprojekt mit einem Formular mit dem Namen formGraphics.

Der Code muss sich innerhalb des Gültigkeitsbereichs der Form-Klasse befinden. this steht für die Formularinstanz."
Und jetzt sagt ihr hier etwas von Paint Events und so, ich habe keine Ahnung was das heißt. Ich möchte doch nur eine Linie zeichnen, sehen wie das geht, dann versteh ich das wahrscheinlich auch, dann versteh ich wahrscheinlich auch danach was ein PaintEvent ist. Aber wenn ich diese Begrifflichkeiten um die Ohren gehauen kriege ohne einen Hinweis, wie man das jetzt konkret umsetzen muss, dann hilft mir das leider nicht.

Also danke für Eure Hilfe und Geduldt, aber bitte richtet die Hilfe so aus, dass ich mit ihr etwas anfangen kann :)
 

Cromon

Erfahrenes Mitglied
Nein, wir müssen die Hilfe nicht so ausrichten, dass du etwas mit ihr anfangen kannst, du musst unsere Hilfe verstehen lernen.

Es gibt hunderte von Anleitungen wie du eine Form oder ein Control mit Events verknüpfst. Du gehst in die Eigenschaften der Form, gehst dann oben auf den Blitz, gehst zu "Paint" und doppelklickst in das leere Feld, dann wird die Funktion erstellt. Das ist ein Beispiel. Ein anderes:

Code:
this.Paint += new

Und nachdem du new eingegeben hast zweimal mit Tabulator bestätigen, dann wird dir automatisch die Funktion erstellt.
 

Zacha

Grünschnabel
Danke, so konnte ich jetzt was damit anfangen und dann hat es auch funktioniert. Diese Form der Verknüpfung kannte ich noch nicht. Also noch mal Danke. Ich verstehe wenn es anstrengt, so was zum x-ten mal zu erklären, aber ein Anfänger wie ich weiß nicht wonach er suchen muss.

Jetzt kann ich erst mal weiter probieren, bis zum nächsten für mich nicht mehr ohne Hilfe zu lösenden Problem :)
 

Cromon

Erfahrenes Mitglied
Ok, das freut mich, dass es funktioniert hat. Idealerweise überlegst du dir jetzt auch noch, was genau du getan hast und probierst, ob du vielleicht auch mal noch einen anderen Event hinzufügen kannst, dann kommst du in die Eventgeschichte rein.

Und dann kannst du noch auf "Erledigt" gehen unten beim Thread.