12
1 Einführung in die Computergraphik 1. Programmieraufgabe Gui, Widgets & Events Einführung in C# 09.04.2008 B-CG Einführung in die Computergraphik Prof. Dr. Detlef Krömker, Sebastian Schäfer Graphische Datenverarbeitung, Institut für Informatik Übersicht Gui & Widgets Events Kurze Einführung in C# Programmieraufgabe 1 B-CG Einführung in die Computergraphik Prof. Dr. Detlef Krömker, Sebastian Schäfer Graphische Datenverarbeitung, Institut für Informatik 3 B-CG Einführung in die Computergraphik GUI

Einführung in die Computergraphik€¦ · Kurze Einführung in C# (C sharp) ‣ Prozedurale OOP-Sprache von Microsoft, VÖ in 2001 ‣ Aktuell: C# 3.0 seit 19.11.2007 ‣ Basis:

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Einführung in die Computergraphik€¦ · Kurze Einführung in C# (C sharp) ‣ Prozedurale OOP-Sprache von Microsoft, VÖ in 2001 ‣ Aktuell: C# 3.0 seit 19.11.2007 ‣ Basis:

1

Einführung in die Computergraphik

1. Programmieraufgabe

Gui, Widgets & Events

Einführung in C#

09.04.2008

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik

Übersicht

‣ Gui & Widgets

‣ Events

‣ Kurze Einführung in C#

‣ Programmieraufgabe 1

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik 3

B-CGEinführung in die Computergraphik

GUI

Page 2: Einführung in die Computergraphik€¦ · Kurze Einführung in C# (C sharp) ‣ Prozedurale OOP-Sprache von Microsoft, VÖ in 2001 ‣ Aktuell: C# 3.0 seit 19.11.2007 ‣ Basis:

2

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik 4

GUI ?

Als GUI (= “Graphical User Interface”) bezeichnet man die

‣grafische Benutzungsschnittstelle oder auch

‣grafische Benutzungsoberfläche

eines Programmes; sie ist der Teil einer Software, mit der ein (normaler) Benutzer

interagiert.

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik 5

Beispiele von GUIs

verschiedene GUI Beispiele: MS Windows XP, Atari TOS 2.06, RedHat 8.0 + Gnome, Apple OS X 10.4.6; Quelle: http://toastytech.com/gui

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik 6

GUI-Anforderungen

Da die GUI das entscheidende Element der Mensch-Maschine Interaktion ist, werden an eine “gute” GUI Anforderung gestellt:

‣Aufgabenangemessenheit

‣Selbstbeschreibungsfähigkeit

‣Steuerbarkeit

‣Erwartungskonformität

‣Fehlerrobustheit

‣Individualisierbarkeit

‣Lernförderlichkeit

Diese Anforderungen wurden (u.a.) in Norm DIN EN ISO 9241 festgehalten.

Page 3: Einführung in die Computergraphik€¦ · Kurze Einführung in C# (C sharp) ‣ Prozedurale OOP-Sprache von Microsoft, VÖ in 2001 ‣ Aktuell: C# 3.0 seit 19.11.2007 ‣ Basis:

3

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik 7

B-CGEinführung in die Computergraphik

Widget Toolkits&

Events

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik 8

Widget Toolkits?

‣ Sammlung von Klassen, Schnittstellen und Bibliotheken, die die Erstellung und Benutzung einer GUI vereinfachen

‣ Ein Widget ist eine grafische Komponente, wie z.b.

‣ Buttons

‣ Textfelder

‣ Dialoge

‣ ...

verschiedene Widget-Beispiele: Java Swing, Apple Cocoa, MS MFC

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik 9

Widget Toolkits!

Widgets erleichtern dem Programmierenden die Arbeit:

Widgets sind

‣... direkt durch Instanziierung einsetzbar.

‣... mehr als optische Elemente - sie besitzen viele vorgegebene Methoden

und Eigenschaften.

‣...durch Vererbung stark anpassbar.

Ein einheitliches Aussehen erleichtert dem Benutzer dem Umgang mit GUIs.

Page 4: Einführung in die Computergraphik€¦ · Kurze Einführung in C# (C sharp) ‣ Prozedurale OOP-Sprache von Microsoft, VÖ in 2001 ‣ Aktuell: C# 3.0 seit 19.11.2007 ‣ Basis:

4

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik 10

Widgets im Einsatz

Üblicherweise unterstützen objektorientierte Toolkits die ereignisgesteuerte Programmierung:

‣In der Programmerstellungsphase werden bestimmten Ereignissen

auszuführende Methoden zugewiesen.

‣Zur Laufzeit wartet das Programm auf das Eintreten der Ereignisse um

anschließend die zugewiesenen Methoden aufzurufen.

{

System.out.println("Aktion!");

}

> Aktion!

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik 11

Ereignisse im Detail

Beim gezeigten Beispiel passiert intern (stark vereinfacht) folgendes:

‣Der Button speichert Referenz auf die auszuführende Methode.

‣Ab Programmstart überwacht das Toolkit die Maus:

‣ Klick?

‣ Check, welches Objekt getroffen wurde

‣ Aufruf der gespeicherten zugewiesenen Methode

Das Überwachen des Toolkits geschieht häufig (oder sollte zumindest) in

einem eigenem Thread.

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik 12

Ereignisgesteuerte Programmierung

‣ Der Programmfluss wird durch den Ereignisse gesteuert

‣ Interaktionen (des Benutzers) lösen Ereignisse aus

‣ Maus

‣ Tastatur

‣ Gamepad/Joystick/...

‣ Nicht-Benutzer Ereignisse: Nachricht empfangen, ...

‣ Ist die mit dem Ereignis verbundene Methode ausgeführt worden, wartet

das Programm auf weitere Eingaben

‣ Das Programm ist so lange aktiv, bis der Benutzer es beendet

Page 5: Einführung in die Computergraphik€¦ · Kurze Einführung in C# (C sharp) ‣ Prozedurale OOP-Sprache von Microsoft, VÖ in 2001 ‣ Aktuell: C# 3.0 seit 19.11.2007 ‣ Basis:

5

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik 13

B-CGEinführung in die Computergraphik

C#

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik

Kurze Einführung in C# (C sharp)

‣ Prozedurale OOP-Sprache von Microsoft, VÖ in 2001

‣ Aktuell: C# 3.0 seit 19.11.2007

‣ Basis: C++; Java, Delphi & VB … sowie andere

‣ Benötigt Runtime zur Ausführung:

‣ CLR – Windows (MS)

‣ Mono – Linux, BSD, OSX, … (OpenSource)

‣ Direkte Unterstützung der .NET Komponenten

‣ Mächtig durch viele vorgegebene Klassen

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik

Einige C# Features

C# 1.0

‣ Automatische Garbage Collection

‣ Direkter Speicherzugriff möglich (unsafe keyword)

C# 2.0

‣ Generic Types

‣ Partielle Klassen

‣ Iteratoren

C# 3.0

‣ Lambda-Ausdrücke (funkt. Programmierung)

‣ Language Integrated Query (LINQ)

Page 6: Einführung in die Computergraphik€¦ · Kurze Einführung in C# (C sharp) ‣ Prozedurale OOP-Sprache von Microsoft, VÖ in 2001 ‣ Aktuell: C# 3.0 seit 19.11.2007 ‣ Basis:

6

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik 16

Typen & Operatoren

‣ Wahrheitstyp:

‣ bool

‣ Zahlentypen:

‣ int, double, float, byte, ...

‣ Texttypen:

‣ char: ‘a’, String: “abc”

‣ Operatoren:

‣ +, -, *, /, %; ++A, A++, --A, A--

‣ +=, -=, *=, /=, %=;

‣ ||, &&, ==, <, >, ?

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik

B-CGEinführung in die Computergraphik 17

Flow control

int n = 0;

if (n == 5)

{ } else { }

for (int i = 0; i < n; i++)

{ }

switch (n)

{

case 5:

break;

default:

break;

} und andere...

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik

B-CGEinführung in die Computergraphik 18

Klasse & Funktion

public class Vec1

{

private double x;

public Vec1()

{ x = 1;}

public double GetX()

{ return x;}

public void Print()

{ System.Console.WriteLine(“x= “ + x);}

}

Page 7: Einführung in die Computergraphik€¦ · Kurze Einführung in C# (C sharp) ‣ Prozedurale OOP-Sprache von Microsoft, VÖ in 2001 ‣ Aktuell: C# 3.0 seit 19.11.2007 ‣ Basis:

7

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik

B-CGEinführung in die Computergraphik

Verschiedene Beispiele – Iterator/Generics

Collection<String> txts = new Collection<String>();

for (int i=0; i<23; i++)

txts.Add(i.ToString());

foreach (String txt in txts)

System.Console.WriteLine(txt);

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik

B-CGEinführung in die Computergraphik

Verschiedene Beispiele - Property

private Color color;

public Color BackgroundColor

{

get { return color; }

set { color = value; }

}

//Set/Get Zugriff auf Variable

Objekt.BackgroundColor = Color.Black;

Color col = Objekt.BackgroundColor;

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik 21

IDE

IDE erleichtern dem Programmierenden das Arbeiten z.B. durch:

‣ Syntaxhighlighting

‣ Verschiedene Übersichten (Variablen, Methoden, ...)

‣ Eingabehilfen (Autocomplete, ...)

‣ Projekterstellungstools und andere Werkzeuge

Für C# gibt es zur Zeit folgende IDEs:

‣ Microsoft VisualStudio (ExpressEdition kostenlos), Windows

‣ SharpDevelop (OpenSource), Windows

‣ MonoDevelop (OpenSource), Linux & OS X

Page 8: Einführung in die Computergraphik€¦ · Kurze Einführung in C# (C sharp) ‣ Prozedurale OOP-Sprache von Microsoft, VÖ in 2001 ‣ Aktuell: C# 3.0 seit 19.11.2007 ‣ Basis:

8

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik 22

B-CGEinführung in die Computergraphik

Ein kleines Beispiel

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik 23

Programm Ziel

Erweitertes “Hello World” Programm:

‣Frei wählbarer Text

‣wählbare Anzahl der Wiederholungen

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik 24

Schritt 1 - Neues Projekt anlegen

Page 9: Einführung in die Computergraphik€¦ · Kurze Einführung in C# (C sharp) ‣ Prozedurale OOP-Sprache von Microsoft, VÖ in 2001 ‣ Aktuell: C# 3.0 seit 19.11.2007 ‣ Basis:

9

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik 25

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik 26

Schritt 2 - Widgets platzieren

Label

Button

NumericUpDown

TextBox

RichTextBox

Widgettypen

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik 27

Schritt 3 - Widgets konfigurieren

rtbAusgabe

tbText

jetzt mit Doppelclick auf den Button den Quellcode Editor für das Ereignis aufrufen

Sinnvolle Benennung:Typ + Funktion

numWiederholungen

Startwerte angeben!

Page 10: Einführung in die Computergraphik€¦ · Kurze Einführung in C# (C sharp) ‣ Prozedurale OOP-Sprache von Microsoft, VÖ in 2001 ‣ Aktuell: C# 3.0 seit 19.11.2007 ‣ Basis:

10

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik 28

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik 29

Schritt 4 - Quellcode

Jetzt das Programm starten:

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik 30

Ausführen!

Page 11: Einführung in die Computergraphik€¦ · Kurze Einführung in C# (C sharp) ‣ Prozedurale OOP-Sprache von Microsoft, VÖ in 2001 ‣ Aktuell: C# 3.0 seit 19.11.2007 ‣ Basis:

11

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik 31

B-CGEinführung in die Computergraphik

Programmieraufgabe #1

9.4.2008 - 24.4.2008

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik 32

Vektorrechner

‣ Eingabe von zwei 2D-Vektoren

‣ Verschiedene Operationen:

‣ Addition, Subtraktion

‣ Länge, Normalisieren

‣ Skalieren

‣ Kreuzprodukt(!), Skalarprodukt

‣ Graphische Visualisierung der Vektoren und Ergebnisse

‣ Textuelle Ausgabe der Rechnung

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik 33

GUI Vorschlag

Page 12: Einführung in die Computergraphik€¦ · Kurze Einführung in C# (C sharp) ‣ Prozedurale OOP-Sprache von Microsoft, VÖ in 2001 ‣ Aktuell: C# 3.0 seit 19.11.2007 ‣ Basis:

12

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik 34

Anforderungen

‣ Klasse Vec2, die den Vektor repräsentiert

‣ Properties für X und Y, beide double

‣ Mehrere Konstruktoren (0, 1, 2 Parameter)

‣ Operationen +, -, Skalar* per Operatorenüberladung

‣ Ausgabe des Vektors mit überschriebener ToString() Methode

‣ Graphische Ausgabe in PictureBox mit Resize-Event

‣ Zwischenspeicherung der Vektoren in Collection

‣ Automatisch korrekte Skalierung!

‣ Textuelle Ausgabe in RichTextBox

‣ Fehlercheck mit Try...catch bei Konvertierung von String - double

‣ Sinnvolle Benennung, dokumentierter Code!

B-CGEinführung in die Computergraphik

Prof. Dr. Detlef Krömker, Sebastian SchäferGraphische Datenverarbeitung, Institut für Informatik 35

B-CGEinführung in die Computergraphik

Vielen Dank:)