Autor Beitrag
derjonny
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mo 12.04.10 13:31 
Hallo ihr lieben, da ich noch völliger anfänger bin in sachen programmieren habe ich doch schon die erste frage. Was hat dies zu bedeuten?
Ich wollte anfangen zu zeichnen mit C# .

Fehler 1 "System.EventArgs" enthält keine Definition für "Graphics", und es konnte keine Erweiterungsmethode "Graphics" gefunden werden, die ein erstes Argument vom Typ "System.EventArgs" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?) C:\Users\Jonny\Documents\Visual Studio 2008\Projects\WindowsFormsApplication2\WindowsFormsApplication2\Form1.cs 31 28 WindowsFormsApplication2

Um euch mal aufzuklähren was dies zu bedeuten hat. Ich bin in der ausbildung als Informatikkaufmann und nun müssen wir eine Projektarbeit anfertigen. Dazu soll ein kleines Programm geschrieben werden. Für diese sache bräuchte ich jetzt eure hilfe..:D

MFG Jonny

Huch habe den Quelltext vergessen. :D

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Windows.Forms.Design;
using System.IO;
using System.Drawing.Printing;
using System.Drawing.Imaging;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void btnAnzeige_Click(object sender, EventArgs e)
        {
            Graphics g = e.Graphics;
            g.DrawString("Hello C#"new Font("Verdana"20),
            new SolidBrush(Color.Tomato), 4040);
            g.DrawRectangle(new Pen(Color.Pink, 3), 2020150100);
            
        }
    }
}


Moderiert von user profile iconKha: C#-Tags hinzugefügt
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mo 12.04.10 17:05 
Hallo und :welcome:

Bitte mache deinen Beitrag lesbar: Öffne ihn mit dem Schere-Button, markiere den Teil, der Code sein soll, öffne "Bereiche", wähle in der ComboBox C# aus, drücke den Plus-Button, füge (soweit nötig) Einrückungen ein, benutze die "Vorschau", erst zum Schluss "Absenden". Meinst du nicht, dass man jetzt schneller versteht, worum es geht?

Allgemein: Eine solche Fehlermeldung kann mehrere Ursachen haben:
1. Du benutzt eine Klasse, die der Compiler nicht kennt. Dann muss über den Projekt-Explorer eine Referenz hinzugefügt werden.
2. Wenn die Referenz vorhanden ist: Du benutzt nur den Kurznamen der Klasse. Dann muss der Namespace angegeben werden: entweder beim Klassennamen oder (einfacher) per using-Direktive.
3. Wenn beides gegeben ist: Du verwendest eine Eigenschaft oder Methode, die die betreffende Klasse nicht kennt. Dann brauchst du eine passende andere Klasse.

Zu deinem Problem: Gezeichnet werden kann/soll nur in einem Ereignis, das dafür vorgesehen ist, nämlich Paint, aber nicht in einem beliebigen Button-Click. Dann stehen nämlich PaintEventArgs (statt einfacher EventArgs) zur Verfügung, und dazu passt dein Code-Versuch.

So ist das mit Code-Schnipseln: Sie dürfen nicht einfach kopiert und irgendwo eingefügt werden, sondern man muss wissen, was man wofür verwendet.

Gruß Jürgen
LordBen
Hält's aus hier
Beiträge: 8

Windoof XP
Visual C# 2008 Express, XNA GameStudios 3.1, BlitzBasic 3D
BeitragVerfasst: Mo 12.04.10 17:09 
:welcome:
ich bin zwar auch relativ neu, aber ich glaube zu wissen woran es liegt :idea:

du musst erst noch die graphic erst noch bekannt geben (sorry kenne mich nicht so sehr mit den fachbegriffen aus)
das müsste dann wie folgt lauten:
ausblenden C#-Quelltext
1:
Graphics name = this.creategraphics();					


ich hoffe das stimmt und ich konnte helfen

Edit: ach ja bei name solltest du irgendeinen namen eingeben, wie deine graphic heißen soll...
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 12.04.10 17:32 
CreateGraphics ist in den seltensten Fällen nützlich, da der Inhalt beim nächsten Repaint wieder weg ist. Der Weg über die EventArgs von Paint ist schon der richtige.

_________________
>λ=
derjonny Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Di 13.04.10 10:21 
ich danke euch schonmal für diese netten antworten.:D
Das hat mir schonmal sehr geholfen.

Die frage ist ja jetzt wie sieht der code aus wenn ich sage.

"Klicke auf den Button und das gemalte bild soll in der PictureBox erscheinen."??

:)
norman2306
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 222
Erhaltene Danke: 16

Win XP, Win 7 64-Bit
C# 4.0 (VS2010)
BeitragVerfasst: Di 13.04.10 10:53 
Du solltest dir darüber Gedanken machen... es versuchen, und wenn es nicht funktioniert, dann hier deinen Code posten und fragen warum es so nicht geht. Die meisten hier werden dir keinen fertigen Code liefern. Eine andere Möglichkeit ist, nach einer Vorgehensweise zu fragen. Aber auch hier wirst du in den seltensten Fällen direkt Code bekommen. Wir helfen gerne, aber wir erledigen nicht deine Hausaufgaben.

Also, beschreib dein Problem genau und sag uns, an welcher Stelle du nicht weiter kommst. Dann bekommst du ruck zuck einen tollen Tip.

Wenn du nur ein Bild in eine Picturebox haben möchtest, mussst du es nicht mit Graphics zeichnen. Du könntest auch einfach dem BackgoundPicture der PicBox ein Bild zuweisen.

Oder du schreibst in Paint-Ereignis der PicBox, dass wenn ein bestimmter bool gesetzt ist, du ein Bild malst. Im Button setzt du den entsprechenden bool und löst ein Repaint aus.
derjonny Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Do 15.04.10 10:32 
Supi ich danke euch habe alles hinbekommen :D
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
private void button1_Click(object sender, EventArgs e)
        {
            // Wenn die CheckBox aktiviert ist dann wird der Schltkreis mit angezeigt
            if (chBSchaltkreisAnz.Checked == true)
            {
                //Schaltung Zeichnen der Spannungsrichtigen Messmethode
                Graphics g = picBSchaltung.CreateGraphics(); // Grafik einer Variable Übergeben und in die PictureBox Zeichnen
                Pen pen =  new Pen(Color.Black);             // Einer Variablen den Stift mit Farbe zuweisen (Quellcode Sparen)
                g.DrawLine(pen, 201515015);
                g.DrawLine(pen, 20602015);
                g.DrawLine(pen, 2010520135);
                g.DrawLine(pen, 20135330135);
                g.DrawLine(pen, 1801533015);
                g.DrawLine(pen, 3301533050);
                g.DrawLine(pen, 330105330135);
                //Amperemeter
                g.DrawString("A"new Font("Arial"20), Brushes.Blue, 1520);
                g.DrawEllipse(pen, 15003030);
                //Grundstromquelle
                g.DrawRectangle(pen, 0603045);
                g.DrawString("G",new Font("Arial"20), Brushes.Red, 058);
                g.DrawLine(pen, 5852585);
                //Verbindungspunkte
                g.FillEllipse(Brushes.Black, 2701266);
                g.FillEllipse(Brushes.Black, 27013266);
                //Voltmeter
                g.DrawLine(pen, 2731827357);
                g.DrawLine(pen, 27387273132);
                g.DrawEllipse(pen, 258573030);
                g.DrawString("V"new Font("Arial"20), Brushes.Blue, 26057);
                //Wiederstand
                g.DrawRectangle(pen, 320502055);
                g.DrawString("R"new Font("Arial"12), Brushes.Black, 32167);
            }
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Do 15.04.10 13:38 
Ich glaube nicht, dass das die Lösung ist. Führe dieses Verfahren einmal aus. Danach hole irgendein anderes Fenster einer anderen Anwendung in den Vordergrund und setze es über dein Fenster; dann minimiere die andere Anwendung. Was passiert dann mit deiner Zeichnung?

Ich habe noch niemals gezeichnet, deshalb bin ich weniger als ein Anfänger. Aber nach allem, was ich bisher gelesen habe, dürfte dein Vorgehen falsch sein, weil du nicht das Paint-Ereignis benutzt; siehe oben auch Kha's Antwort.

Jürgen
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Do 15.04.10 13:43 
Ja, Jürgen und Kha haben natürlich recht.

Wenn du nicht die Paint Methode verwenden willst, kannst du auch auf ein Image zeichnen und dieses der PictureBox zuweisen. Ist vlt. sinnvoller, weil man dann nur einmal mehr oder weniger aufwendig das Bild zeichnen... wobei mir gerade auffällt, dass ich gar nicht weiß wie im Hintergrund ein Bild zur Laufzeit abgelegt wird.. irgendwie muss es ja auch wieder gezeichnet werden.. hmm :D Hilfe??? Dennoch denke ich einmal Bild zeichnen und der PictureBox zuweisen ist Performance sparender.
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Do 15.04.10 16:17 
user profile icondanielf hat folgendes geschrieben Zum zitierten Posting springen:
wobei mir gerade auffällt, dass ich gar nicht weiß wie im Hintergrund ein Bild zur Laufzeit abgelegt wird.. irgendwie muss es ja auch wieder gezeichnet werden.. hmm :D
Deine Verwunderung spiegelt sich in der Tatsache wider, dass Image abstract ist *g* .
Es gibt eigentlich nur zwei Möglichkeiten: Man speichert wie Metafile nur die Abfolge der Operationen, dann hätten wir im Vergleich zu einem reinen Paint-Handler nichts gewonnen. Oder man speichert wirklich ein Array aller Pixel, wie es der Name Bitmap nahe legt. Speicher spart das natürlich nicht gerade, aber Zeit im Allgemeinen schon ;) .

_________________
>λ=