+ All Categories
Home > Documents > Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

Date post: 05-Apr-2015
Category:
Upload: gebhard-gehrt
View: 143 times
Download: 2 times
Share this document with a friend
35
Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf
Transcript
Page 1: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

Delphi

Grafikprogrammierung

Ein Vortrag von Thomas Götze und Karsten Wolf

Page 2: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

Problem:

Wie kann ein Bild oder eine reale Situation in den Speicher eines Computers abgebildet (digitalisiert) werden?Möglichkeit 1 - Pixelgrafik:

Aufbau des Bildes (Rasterung) aus Punktobjekten gleicher Größe, sog. Pixel.

Jedes Pixel hat bestimmte Eigenschaften (Attribute), z. B. x-Position, y-Position oder Farbe, die mit Werten belegt werden.

Möglichkeit 2 - Vektorgrafik:

Aufbau des Bildes aus Grafikobjekten variabler Größe und Form (Vektorisierung).

Jedes Objekt kann durch Anweisungen (Prozeduren), z.B. Zeichne Linie im Winkel 45°, 200 Einheiten lang, und Eigenschaften (Attribute), z.B. Linienbreite oder Farbe, beschrieben werden.

Page 3: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

Theoretische Grundlagen

Das Canvas-Objekt

Das Koordinatensystem

Grundlegende Zeichenfunktionen

Farben, Muster und Pinsel

Linien und Stifte

Koordinatentransformation

Page 4: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

Das Canvas- Objekt

Ein zentrales Objekt der Grafikausgabe mit Delphi ist immereine Zeichenfläche (Leinwand) der Klasse TCanvas.

Page 5: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

Um Grafiken auf dem Bildschirm auszugeben, wird eine Komponente benötigt, welche die Eigenschaft Canvas besitzt, also eine Zeichenfläche. Zu diesen Komponenten gehören die Forms (die späteren Windows-Fenster), die Paintbox, die Image-Komponente und der Drucker. Am einfachsten zu benutzen ist davon die Image-Komponente, weil man sich bei dieser nicht um das Wiederherstellen der Zeichnung kümmern muss, wenn z.B. die Größe des Fensters verändert oder dieses von einem anderen Fenster überlagert wurde. Wir werden sie deshalb fast immer benutzen.

Page 6: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

TCanvas stellt Eigenschaften, Ereignisse und Methoden zur Verfügung, die beim Erzeugen von Bildern hilfreich sind, indem sie:

• die Art des verwendeten Pinsels und Stiftes sowie die Schriftart festlegen.

• eine Vielzahl von Formen und Linien zeichnen und füllen.• Text ausgeben.• Grafiken zeichnen.

• eine Reaktion auf Änderungen am aktuellen Bild ermöglichen.

Page 7: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

Einige Delphikomponenten enthalten diese „Leinwand“,auf der gezeichnet werden kann.Am einfachsten zu benutzen ist die Image-Komponente(unter zusätzlich).

Page 8: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

Canvas.Pen Pen.Width Pen.Color Pen.Style

Im TCanvas-Objekt sind noch folgende Objekte enthalten:

Page 9: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

Canvas.Brush Brush.Color Brush.Style

Page 10: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

Canvas.Font Font.Name Font.Color Font.Style Font.Size

Beispiel:Der Schrift einer Image-Komponentewird rot zugewiesen.Form1.Image1.Canvas.Font.Color:=clRed;

Page 11: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

Das Koordinatensystem

FC a nva s.Wid th

C a nva s.He ig ht

C a nva s.C lie ntHe ig ht

0,0

=Form1.clientwidth

Page 12: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

Im a g e 1.To p

Im a g e 1.Le ft

Im a g e 1.C lie ntWid th

I

Im a g e 1.C lie ntHe ig ht

0,0

!!!Positive y-Werte werden nach unten abgetragen!!!!

Page 13: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

Beispiel: Zentrierung der Image-Komponente innerhalb eines Formulars.

Image1.left:=(Form1.clientwidth – Image1.width) div 2;

Image1.top:=(Form1.clientheight – Image1.Height) div 2

Page 14: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

Farben, Muster und PinselWindows verwaltet die Farben über das RGB(Rot – Grün – Blau )-Modell.

Die Farbe kann u.a. über die ColorDialog – Komponenteauswählen.

Delphi besitzt aber auch zahlreiche vordefinierte Farben, welche mit dem Kürzel cl beginnen.

clRed Rot clBlack Schwarz

clSilver Silbergrau clGreen Grün

Page 15: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

ColorDialog

- Colordialog – Komponente aus Register Dialoge wählen.

- Aufruf des Dialoges zur Laufzeit mit der Execute – Methode.

- ColorDialog1.Execute;

-Den Rückgabewert verwenden:

-Image1.Canvas.Brush.Color:=Colordialog1.Color;

Page 16: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

FüllungenBrush.Style Brush.Color

bsSolid

bsClear

bsBDiagonal

bsFDiagonal

bsCross

bsDiagCross

bsHorizontal

bsVertical

Page 17: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

Linien und Stifte

Eigenschaft

Objekt Beschreibung

Linienbreite Pen.Width

...in Pixeln

Linientyp Pen.Style ... nur wenn Pen.Width =1

Page 18: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

Pen.Style

psSolid

psDash

psDot

psDashDot

psDashDotDot

psClear

Page 19: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

Grundlegende Zeichenfunktionen

Page 20: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

PunktPunkte werden mit Hilfe der Pixel – Eigenschaft gesetzt.

Canvas.Pixels[x,y]:=farbe;

0,0x->

y

Canvas.Pixels[7,9]:=clBlack;

Bem.: Farbe kann somit auch gelesen werden:var farbe: TColor;farbe:= Canvas.Pixels[7,9];

Page 21: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

LinieZuerst wird der Startpunkt mit MoveTo festgelegt. Gezeichnet wird von dieser Position mit LineTo, die den Endpunktbestimmt.

Canvas.MoveTo(x1,y1); Canvas.LineTo(x2,y2);

x2,y2

x1,y1

Image1.Canvas.MoveTo(10,10); Canvas.LineTo(100,100)

Page 22: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

Kreis, EllipseEs werden die linke obere und die rechte untere Ecke desumrahmenden Rechtecks festgelegt.Der Kreis wird als Spezialfall der Ellipse angesehen.

Canvas.Ellipse(x1,y1,x2,y2)

x1,y1

x2,y2Oder Kreis mit Mittelpunkt x1, y1 und Radius r:canvas.ellipse(x1-r,y1-r,x1+r,y1+r)

Page 23: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

Rechteck

Canvas.Rectangle(x1,y1,x2,y2)

x1,y1

x2,y2

Page 24: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

abgerundetes RechteckDie Ecken werden als Ellipsenviertel der Breite x3 und derHöhe y3 dargestellt. Ist Brush.Stile <>bsClear, wird das Rechteck mit dem aktuellen Pinsel gefüllt.

Canvas.RoundRect(x1,y1,x2,y2,x3,y3:Integer;

x1,y1

x2,y2

x3

y3

canvas.Roundrect(10,10,100,100,10,5);

Page 25: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

Segmentx1,y1

x2,y2

x3,y3

x4,y4Die Methode Pie zeichnet ein Segment, das durch eineEllipse und zwei Linien begrenzt wird. Für Brush.Style<>bsClear wird das Segment gefüllt.Canvas.Pie(x1,y1,x2,y2,x3,y3,x4,y4);Canvas.Pie(0,0,500,400,0,250,400);

Page 26: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

Bogenstückx1,y1

x2,y2

x3,y3

x4,y4

Die Methode Arc zeichnet nur den Bogen, nicht die Verbindungen zum Ellipsenmittelpunkt. Keine Füllung.Canvas.Arc(x1,y1,x2,y2,x3,y3,x4,y4)

Page 27: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

Kreisstückx1,y1

x2,y2

x3,y3

x4,y4Mit der Chord-Methode wird der Teil des Kreises gezeichnet,der durch eine Sehne abgeteilt ist.Canvas.Chord(x1,y1,x2,y2,x3,y3,x4,y4)

Page 28: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

Mehrfachlinie

x1,y1

x2,y2

x3,y3x4,y4

x5,y5

Ähnlich zur Linie, werden jedoch mehrere Punkte auf einmalübergeben.Canvas.Polyline([Point(x1,y1), Point(x2,y2).......]);

Page 29: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

N-Eck (Polygon)

x1,y1

x2,y2

x3,y3

x4,y4

.....

Mit der Polygon-Methode kann ein gefülltes n-Eck gezeichnetwerden.Canvas.Polygon([Point(x1,y1), Point(x2,y2).....]);

Page 30: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

TexteDie Methode TextOut ist die einfachste Methode, einenText auf den Bildschirm zu bringen.

Canvas.TextOut(x,y,Text);

Canvas.TextOut(100,100,‘Wort‘);

Page 31: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

Konvertieren der KoordinatenProbleme:

Der Ursprung des math. Koordinatensystems liegt meist in der Mitte des beschriebenen Blattes, auf dem Bildschirm liegt er in der linken oberen Ecke des Canvas.

Die y-Achse ist beim math. Koord.s. nach oben gerichtet, auf dem Bildschirm aber nach unten.

Die Längeneinheit ist in m. Ks. durch das Intervall von Null bis Eins gegeben, auf dem Bildschirm beträgt sie ein Pixel.

Page 32: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

1

1

x

yCanvas

1

1

y1

yp

y0

x0 xp x1

x0:=

x1:=

y0:=image1.width Div 2;image1.Hight Div 2;

y1:=

x0+x0 div 3;

y0-y0 div 3;

Page 33: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

1

1

x

y

1

1

y1

yp

y0

x0 xp x1

00101

0

1xxxxxp

xx

xxpx

00101

0

1yyyyyp

yy

yypy

Page 34: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

Anwendungsbeispiele

Funktion

Standardfunktionen

Page 35: Delphi Grafikprogrammierung Ein Vortrag von Thomas Götze und Karsten Wolf.

Quellen

Programmieren lernen in Borland Delphi 6Hanser Verlag


Recommended