6. Grafikprogrammierung



Ähnliche Dokumente
Delphi Grundkurs Seite 31

Delphi eine Einführung

Programmierung in Delphi

EINFACH. Programmier-Grundkurs. Rosa Mistelbauer

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

Programmierung mit Delphi

G R A F I K. Grafik-Programmierung. Herbert Paukert

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, mneueintrag, meintrag, morderedlist;

Studienseminar Koblenz - Fachseminar Informatik Visualisierung von Sortieralgorithmen

Name. Aufgabe 1) Zur Erinnerung:

Graphic Coding. Klausur. 9. Februar Kurs A

DELPHI 03 SIEBEN ÜBUNGSPROGRAMME. Herbert Paukert

Schriftliche Reifeprüfung aus INFORMATIK: Klasse 8D Haupttermin 2002/03

Komponente NumEdit für Delphi 5.0

Komponente PortIO für Delphi 5.0

Delphi DLL Tutorial Wie exportiere ich Komponenten aus einer DLL?

Simulation von digitalen Schaltungen

GK Informatik /08 (bumue) Klausur

B T R A C K. Backtracking-Algorithmen. Herbert Paukert

Die Klasse TCanvas (Canvas = Leinwand) stellt eine abstrakte Zeichenfläche dar.

Materialien 1: Java-Quelltext zu Beispiel 1

Informatik GK 12 Klassen Klassen programmieren in Delphi am Beispiel der konkreten Klasse Auto

Projekt Informatik: Programmieren einer selbstgewählten Anwendungssoftware. Jenny Förster Susann Lorenz

Komponente PortUSB für Delphi 5.0

Musterlösungen zu den RSA-Arbeitsblättern

Informatik Kurs 12 André Hoffmann. Delphi. Einführung in die Windows- Programmierung

Starten sie WordPad über das Startmenü von Windows. WordPad finden Sie im Ordner Zubehör.

G. KAMLEITER INFORMATIK. Einführung in DELPHI SJ 2004/05 LGG * DARMSTADT. Kurs 11

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Mastermind. objektorientiert, mit Delphi. Patrick Breuer. November Spielbeschreibung 1. 3 Ein erstes Klassendiagramm 1.

12. Fachseminar Informatik Martin Jakobs Zustandsorientierte Modellierung (Standard 2)

3.1 Eine Leinwand zum Zeichnen die Canvas 35

Institut für Informatik Christian-Albrechts-Universität zu Kiel. Borland Delphi. Einführung in die Programmiersprache

Hilfe für den Online-Reader

Bitte wenden. Name: KURSARBEIT NR. 4 (10 DIFF GA) Seite 1

Online Editor Nachfolgend eine kurze Erklärung unseres Online Editors

Dokumentation. Mindestanforderungen: Das Board

Text-Bild-Link-Editor

Skitch Foto Dokumentation Inhaltsverzeichnis

Von Turbo Pascal zu Object Pascal

Word Aufbaukurs kompakt. Dr. Susanne Weber 1. Ausgabe, Oktober 2013 K-WW2013-AK

Graphische Benutzungsoberflächen

Allgemeine Informationen über die Nutzung der Anwendung. Die Werkzeugleiste. = Streckenmessung

LWB VIII. Programmieren mit Delphi Zur Laufzeit verwaltete Objekte. Zur Laufzeit verwaltete Objekte. Am Beispiel des bekannten Memory-Spieles

2 Programmentwicklung mit Delphi

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4.

Einführung in Javadoc

Tipps und Tricks zu den Updates

Datentypen. Agenda für heute, 4. März, Pascal ist eine streng typisierte Programmiersprache

1. Trennlinie mit hr Eine dünne Trennlinie wie die obige in der Regio-Farbe (gelb) kann man recht einfach erstellen. Dafür reicht der Befehl

[Bedienungsanleitung] InfoSys App

Das PC-Topp.NET Abfall-Terminal

Workshop 1 Idealgewicht, Version 1 Starten Sie Delphi. Erstellen Sie ein Formular, das ungefähr so aussieht wie die folgende Abbildung:

Einstellen der Druckoptionen

Robert Hecht - Windischeschenbach. Hechtinator. Aktuelle Version: Datum: 5. Juni Erstellt von Robert Hecht

3. Nun kann auf das Symbol von Stylebook1 geklickt werden. Im mittleren Fenster ist nun das Formular veschwunden. Stattdessen erscheint oben

Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen.

Mit Excel Strickvorlagen erstellen (GRUNDKURS)

Grundlegende Zeichenfunktionen Punkt Aktuelle Stiftposition Linie

Mathe Leuchtturm TI N spire-leuchtturm

GSD-Radionik iradionics Android-App

6.2 Scan-Konvertierung (Scan Conversion)

Webseiten anlegen, verwalten, verändern. Alles im Browser. Am besten Firefox.

Anleitung zum GUI Version 2.x

HEINZ MARTIN PRINTSCREEN BETRIEBSANLEITUNG. Rev 2.11

Angaben zu einem Kontakt...1 So können Sie einen Kontakt erfassen...4 Was Sie mit einem Kontakt tun können...7

ADOBE READER X EINSTELLUNGEN ZERTIFIKAT LAND OÖ VERTRAUEN

Nutzung des Retain-Archivs

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Eine Datei mit dem BvLArchivio -Plug-in archivieren

Klausur in 12.1 Themen: Zahlsysteme, Grundlagen von Delphi (Bearbeitungszeit: 90 Minuten)

M A T H E. Zehn ausgewählte Mathematik-Programme. Herbert Paukert

Konvertieren von Settingsdateien

Einführung in die Programmierung

... Fenster und Content Canvases erstellen

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

Die aktuelle Entwicklung des GeoService-Portals. Analyse- und Auswertefunktionen

Flighthelper GPS Moving Map Software Anleitung 1 von 11

Dokumentation des Projektes Tic Tac Toe

Mit Shape können Sie Formen wie Rechteck, Ellipsen, Kreise auf die gleiche Art wie z. B. ein Button oder ein Label erzeugen.

Dieses Dokument beschreibt die Vorgehensweise wie Sie eine Signatur mit ava sign 4.0 prüfen können.

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Der SD-Kartenslot befindet sich an der rechten Gehäuseseite unterhalb der rechteckigen hellgrauen Gummiabdeckung.

Programmierung in C. Grundlagen. Stefan Kallerhoff

Grafikausgabe mit dem Abstract- Windowing-Toolkit. Eine Einführung

KOSTENTRÄGER VERWALTUNG / ZUWEISUNG

Dokumentenverwaltung

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erste Schritte mit Dia

Handbuch für Redakteure

Aspekte objektorientierter Programmierung. mit Delphi

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

;-Titel des Fensters #MyWindowTitle = "RUF 0.1" :-Button ;Oben x Links #My0Oben = 5 #My0Links =2 ;Höhe x Breite #My0Hoch = 28 #My1Breit = 80

Leere Zeilen aus Excel-Dateien entfernen

Transkript:

Delphi Grundkurs Seite 49 6. Grafikprogrammierung Die Grafikoperationen beziehen sich immer auf die Zeichenoberfläche (Leinwand, Canvas) eines bestimmten Objekts. (0,0) des Formulars Image - Komponentenpalette Zusätzlich (0,0) des Images Image.Top Canvas.Pen Pen.Width Pen.Color Pen.Style Image.Left Image.Height Form.Height Canvas.Brush Brush.Color Brush.Style Image.Canvas.Pen Canvas.Font... Font.Name Image.Canvas.Brush Font.Color... Font.Style Image.Canvas.Font Font.Size Image.Width Form.Width Farbe: Var Farbe : TColor; // vordefinierter Objekttyp Farbe := RGB( R, G, B ); // R-Rot; G-Grün; B-Blau 0.. 255 0.. 255 0.. 255 256³ 16 Millionen Farbkombinationen möglich (TrueColor) Koordinaten: Unit JPEG: Farbe := clred; var P : TPoint; P.X := 10; P.Y := 20; // entspricht RGB(255, 0, 0) // vordefinierter Datentyp zur Speicherung von // Punktkoordinaten type TPoint = record X : Integer; Y : Integer; Zum Laden und Speichern von Bildern (*.bmp; *.jpg)

Delphi Grundkurs Seite 50 Beispiel 15 Zufallsgrafik Problem: Programm P15 (\Grafikbeispiele) Zeichnen von Punkten, Strecken, Rechtecken, Ellipsen mit Zufallskoordinaten; Ausgabe eines Textes im Image. Formulardesign: Grafikbefehle: Image.Canvas.Pixels[x,y] := Farbe; // Punkt mit Koordinaten (x,y) in Farbe Farbe // zeichnen Image.Canvas.MoveTo(x1,y1); Image.Canvas.LineTo(x2,y2); // unsichtbaren Grafikcursor auf (x1,y1) // positionieren // Linie von (x1,y1) nach (x2,y2) zeichnen Image.Canvas.Rectangle(x1,y1,x2,y2); // Rechteck zeichnen // (x1,y1) linker oberer Eckpunkt // (x2,y2) rechter unterer Eckpunkt Image.Canvas.Ellipse(x1,y1,x2,y2); // Ellipse zeichnen // Koordinaten wie oben Image.Canvas.TextOut(x,y,s); // Ausgabe des Strings s an Position (x,y)

Delphi Grundkurs Seite 51 Listing: unit P15_U; // Zufallsgrafik interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Printers; type TForm1 = class(tform) Panel1 : TPanel; // Container für Image Image1 : TImage; Button1: TButton; // Punkte Button2: TButton; // Linien Button3: TButton; // Rechtecke Button4: TButton; // Ellipsen Button5: TButton; // Text Button6: TButton; // Drucken Button7: TButton; // Beenden Button8: TButton; // Neu Label1 : TLabel; Bevel1 : TBevel; Bevel2 : TBevel; procedure FormActivate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } var Form1: TForm1; implementation {$R *.DFM} var XMax : Integer; // Höchstanzahl horizontaler Bildpunkte YMax : Integer; // Höchstanzahl vertikaler Bildpunkte Farbe : TColor; // Farbe; TColor - vordefinierter Objekttyp R, // Rotanteil G, // Grünanteil B : Integer; // Blauanteil

Delphi Grundkurs Seite 52 x1, y1, // Koordinaten x2, y2 : Integer; procedure Bild_loeschen; // Grafikbild löschen with Form1.Image1.Canvas do Brush.Style := bssolid; // Art der Musterfüllung Brush.Color := clwhite; // Füllfarbe Pen.Width := 1; // Stiftdicke Pen.Color := clblack; // Zeichenfarbe Rectangle(0,0,XMax,YMax); Brush.Style := bsclear; procedure Zufallsfarbe; R := Random(256); G := Random(256); B := Random(256); Farbe := RGB(R,G,B); procedure Zufallskoordinaten; x1 := Random(XMax); y1 := Random(YMax); x2 := Random(XMax); y2 := Random(YMax); procedure TForm1.FormActivate(Sender: TObject); // Globale Variable initialisieren und Grafikbild löschen Randomize; Form1.Image1.Visible := True; XMax := Form1.Image1.Width; YMax := Form1.Image1.Height; Bild_loeschen; procedure TForm1.Button1Click(Sender: TObject); // Punkte zeichnen var I : Integer; for I := 1 to 100 do Zufallsfarbe; Zufallskoordinaten; Image1.Canvas.Pixels[x1,y1] := Farbe;

Delphi Grundkurs Seite 53 procedure TForm1.Button2Click(Sender: TObject); // Strecke zeichnen Zufallsfarbe; Zufallskoordinaten; with Image1.Canvas do Pen.Color := Farbe; Pen.Width := Random(10) + 1; MoveTo(x1,y1); // Unsichtbaren Grafikcursor auf (x1,y1) positionieren LineTo(x2,y2); // Linie von (x1,y1) zu (x2,y2) zeichnen procedure TForm1.Button3Click(Sender: TObject); // Rechteck zeichnen Zufallsfarbe; Zufallskoordinaten; with Image1.Canvas do Pen.Color := Farbe; Brush.Color := Farbe; Pen.Width := Random(10) + 1; Rectangle(x1,y1,x2,y2); procedure TForm1.Button4Click(Sender: TObject); // Ellipse zeichnen Zufallsfarbe; Zufallskoordinaten; with Image1.Canvas do Pen.Color := Farbe; Brush.Color := Farbe; Pen.Width := Random(10) + 1; Ellipse(x1,y1,x2,y2); procedure TForm1.Button5Click(Sender: TObject); // Text 'Hallo' ausgeben Zufallsfarbe; Zufallskoordinaten; with Image1.Canvas do Font.Size := Random(100) + 1; // Schriftgröße Font.Color := Farbe; // Schriftfarbe Brush.Style := bsclear; // Füllmuster

Delphi Grundkurs Seite 54 TextOut(x1,y1,'Hallo'); procedure TForm1.Button6Click(Sender: TObject); // Formular ausdrucken PrintScale := poproportional; Print; procedure TForm1.Button7Click(Sender: TObject); // Beenden Application.Terminate; procedure TForm1.Button8Click(Sender: TObject); // Grafikbild löschen Bild_loeschen; end.

Delphi Grundkurs Seite 55 Beispiel 16 Zeichnen und malen Programm P16 (\Grafikbeispiele) Problem: Jede Mausbewegung mit gedrückter linker Maustaste erzeugt eine Linie. Mit der rechten Maustaste werden die relativen Punktkoordinaten (X,Y) angezeigt. Die Grafikdatei kann geladen und gespeichert werden. Formulardesign: Listing: unit P16_U; // Zeichnen und malen interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Printers; type TForm1 = class(tform) Image1 : TImage; Edit1 : TEdit; Edit2 : TEdit; Label1 : TLabel; Label2 : TLabel; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; // X-Koordinate anzeigen // Y-Koordinate anzeigen // Beschriftungen // Löschen // Beenden // Drucken // Speichern // Laden

Delphi Grundkurs Seite 56 procedure FormActivate(Sender: TObject); procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); private { Private declarations } public { Public declarations } var Form1: TForm1; implementation {$R *.DFM} const GName = 'Rosa.bmp'; procedure ImClear; // Löscht das Image with Form1.Image1 do Canvas.Pen.Color := clblack; Canvas.Brush.Color := clwhite; Canvas.Brush.Style := bssolid; Canvas.Rectangle(0, 0, Width, Height); Canvas.Brush.Style := bsclear; procedure TForm1.FormActivate(Sender: TObject); // Image initialisieren ImClear; procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); // Positionierung des versteckten Grafikcursors an die jeweilige // Mausposition if Button = mbleft then Image1.Canvas.Moveto(X, Y); if Button = mbright then Edit1.Text := 'X = ' + IntToStr(X); Edit2.Text := 'Y = ' + IntToStr(Y);

Delphi Grundkurs Seite 57 procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); // Wenn linke MT gedrückt (Shift-Status) dann Linie zeichnen // von der alten Grafikcursorposition zur neuen Mausposition if Shift =[ssleft] then Image1.Canvas.LineTo(X, Y); Edit1.Text := 'X = ' + IntToStr(X); Edit2.Text := 'Y = ' + IntToStr(Y); procedure TForm1.Button1Click(Sender: TObject); // Löschen ImClear; Edit1.Clear; Edit2.Clear; procedure TForm1.Button2Click(Sender: TObject); // Programm beenden Application.Terminate; procedure TForm1.Button3Click(Sender: TObject); // Gesamtes Formular drucken PrintScale := poproportional; Print; procedure TForm1.Button4Click(Sender: TObject); // Graphik in Bitmap-Datei speichern Image1.Picture.SaveToFile(GName); procedure TForm1.Button5Click(Sender: TObject); // Bitmap-Datei laden Try Image1.Picture.LoadFromFile(GName); Except ShowMessage('Datei "'+ GName + '" nicht gefunden!'); end.

Delphi Grundkurs Seite 58 Beispiel 17 Programm P17 (\Grafikbeispiele) Zeichnen und malen - Polygon Problem: Jede Mausbewegung mit gedrückter linker Maustaste erzeugt eine Linie. Mit der rechten Maustaste werden die relativen Punktkoordinaten (X,Y) angezeigt und fortlaufend in einem Punktspeicher abgelegt. Die gespeicherten Punkte werden durch ein Polygon verbunden. Die Grafikdatei kann geladen und gespeichert werden. Formulardesign: Listing: unit P17_U; // Zeichnen und malen - Polygon interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Printers; type TForm1 = class(tform) Image1 : TImage; Edit1 : TEdit; Edit2 : TEdit; Label1 : TLabel; Label2 : TLabel; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton;

Delphi Grundkurs Seite 59 Button5: TButton; Button6: TButton; // Polygon procedure FormActivate(Sender: TObject); procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); private { Private declarations } public { Public declarations } var Form1: TForm1; implementation {$R *.DFM} const GName = 'Rosa.bmp'; var P : array[1..1000] of TPoint; // Punktspeicher N : Integer; // Anzahl der gespeicherten Punkte procedure ImClear; // Löscht das Image var I : Integer; with Form1.Image1 do Canvas.Pen.Color := clblack; Canvas.Brush.Color := clwhite; Canvas.Brush.Style := bssolid; Canvas.Rectangle(0, 0, Width, Height); Canvas.Brush.Style := bsclear; N := 0; for I := 1 to 1000 do P[I].X := 0; P[I].Y := 0; procedure TForm1.FormActivate(Sender: TObject); // Image initialisieren ImClear; procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

Delphi Grundkurs Seite 60 // Positionierung des versteckten Grafikcursors an die jeweilige // Mausposition; // Anzeige und Abspeicherung der Koordinaten mit rechter MT if Button = mbleft then Image1.Canvas.Moveto(X, Y); if Button = mbright then N := N + 1; Edit1.Text := 'X = ' + IntToStr(X); Edit2.Text := 'Y = ' + IntToStr(Y); P[N].X := X; P[N].Y := Y; procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer); // Wenn linke MT gedrückt (Shift-Status) dann Linie zeichnen // von der alten Grafikcursorposition zur neuen Mausposition if Shift =[ssleft] then Image1.Canvas.LineTo(X, Y); Edit1.Text := 'X = ' + IntToStr(X); Edit2.Text := 'Y = ' + IntToStr(Y); procedure TForm1.Button1Click(Sender: TObject); // Löschen ImClear; Edit1.Clear; Edit2.Clear; procedure TForm1.Button2Click(Sender: TObject); // Programm beenden Application.Terminate; procedure TForm1.Button3Click(Sender: TObject); // Gesamtes Formular drucken PrintScale := poproportional; Print; procedure TForm1.Button4Click(Sender: TObject); // Graphik in Bitmap-Datei speichern Image1.Picture.SaveToFile(GName);

Delphi Grundkurs Seite 61 procedure TForm1.Button5Click(Sender: TObject); // Bitmap-Datei laden Try Image1.Picture.LoadFromFile(GName); Except ShowMessage('Datei "'+ GName + '" nicht gefunden!'); procedure TForm1.Button6Click(Sender: TObject); // Polygon zeichnen if N = 0 then Exit; with Image1.Canvas do Pen.Color := clred; Pen.Width := 2; Polygon(Slice(P, N)); Pen.Color := clblack; Pen.Width := 1; end.

Delphi Grundkurs Seite 62 Beispiel 18 Programm P18 (\Grafikbeispiele) Einfaches Zeichen- und Malprogramm Problem: Zeichenelemente: Strecke Rechteck Leer oder Voll Kreis aus Mittelpunkt und Kreispunkt Linie mit gedrückter linker Maustaste Koordinatenanzeige und Abspeicherung mit gedrückter rechter Maustaste Liniendicke: einstellbar zwischen 0.. 10 Farbe: Rot, Grün, Blau einstellbar zwischen 0.. 255 Die Grafikdatei kann geladen und gespeichert werden. Formulardesign: Listing: unit P18_U; // Einfaches Zeichen- und Malprogramm interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls,

Delphi Grundkurs Seite 63 Forms, Dialogs, StdCtrls, ExtCtrls, Printers; type TForm1 = class(tform) Image1 : TImage; Edit1 : TEdit; // X-Koordinate anzeigen Edit2 : TEdit; // Y-Koordinate anzeigen Button1 : TButton; // Info Button2 : TButton; // Grafik neu Button3 : TButton; // Grafik laden Button4 : TButton; // Grafik speichern Button5 : TButton; // Grafik drucken Button6 : TButton; // Gerade Button7 : TButton; // Reckteck Button8 : TButton; // Kreis Button9 : TButton; // Leer Button10 : TButton; // Voll Button19 : TButton; // Ende Panel1 : TPanel; // Rotanteil anzeigen Panel2 : TPanel; // Grünanteil anzeigen Panel3 : TPanel; // Blauanteil anzeigen Panel4 : TPanel; // Stiftdicke anzeigen Bevel1 : TBevel; Bevel2 : TBevel; Bevel3 : TBevel; Bevel5 : TBevel; Memo1 : TMemo; // Hilfstext ScrollBar1: TScrollBar; // Rotanteil einstellen ScrollBar2: TScrollBar; // Grünanteil einstellen ScrollBar3: TScrollBar; // Blauanteil einstellen ScrollBar4: TScrollBar; // Stiftdicke einstellen procedure FormActivate(Sender: TObject); procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure Memo1DblClick(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button9Click(Sender: TObject); procedure Button10Click(Sender: TObject); procedure Button19Click(Sender: TObject); procedure ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer); procedure ScrollBar2Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer);

Delphi Grundkurs Seite 64 procedure ScrollBar3Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer); procedure ScrollBar4Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer); private { Private-Deklarationen } public { Public-Deklarationen } var Form1: TForm1; implementation {$R *.DFM} type TPunkt = Record X : integer; Y : integer; // Abspeichern von ganzzahligen // Punktkoordinaten var p1, p2, // Hilfspunkte pm : TPunkt; // Mittelpunkt der Bildleinwand Xmax, Ymax, // Höchstanzahl horiz., vert. Bildpunkte X, Y : Integer; // aktuelle Mausposition R, G, B : Byte; Farbe : TColor; // aktuelle Farbe Dicke : Byte; // Stiftdicke procedure TForm1.FormActivate(Sender: TObject); // Initialisieren WindowState := wsmaximized; Form1.Scaled := True; if (Screen.Width<>800) then Form1.ScaleBy(Screen.Width, 800); R := 0; G := 0; B := 0; procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); // Mit linker MT den unsichtbaren Grafikcursor an (X/Y) setzen. // Mit rechter MT diese Punktkoordinaten (X/Y) anzeigen // und fortlaufend in die beiden Punktspeicher p1, p2 ablegen. var s : string; if Button = mbleft then Image1.Canvas.MoveTo(X,Y) end else Str(X,s); Form1.Edit1.Text := 'X = ' + s; Str(Y,s); Form1.Edit2.Text := 'Y = ' + s; p1 := p2;

Delphi Grundkurs Seite 65 p2.x := X; p2.y := Y; procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer); // Jede Mausbewegung mit gedrückter linker MT erzeugt eine Linie. if Shift = [ssleft] then Image1.Canvas.Pen.Color := Farbe; Image1.Canvas.Pen.Width := Dicke; Image1.Canvas.LineTo(X,Y); procedure TForm1.Memo1DblClick(Sender: TObject); // Memobox ausblenden Form1.Memo1.Visible := False; procedure TForm1.Button1Click(Sender: TObject); // Memobox mit Hilfsinfos einblenden Form1.Memo1.Visible := True; procedure TForm1.Button2Click(Sender: TObject); // Globale Variable initialisieren und Grafikbild löschen. Image1.Visible := True; Xmax := Image1.ClientWidth; Ymax := Image1.ClientHeight; pm.x := Round(Xmax/2); pm.y := Round(Ymax/2); with Image1.Canvas do Brush.Style := bssolid; Brush.Color := clwhite; Pen.Width := 1; Pen.Color := clblack; Rectangle(0,0,Xmax,Ymax); Brush.Style := bsclear; p1.x := 0; p1.y := 0; p2 := p1; procedure TForm1.Button3Click(Sender: TObject); // Grafikdatei "PICT.BMP" laden. try Image1.Picture.LoadFromFile('PICT.BMP'); except ShowMessage('Grafikdatei PICT.BMP nicht gefunden!');

Delphi Grundkurs Seite 66 procedure TForm1.Button4Click(Sender: TObject); // Grafikdatei "PICT.BMP" speichern. Image1.Picture.SaveToFile('PICT.BMP'); procedure TForm1.Button5Click(Sender: TObject); // Formular ausdrucken PrintScale := poproportional; Print; procedure TForm1.Button6Click(Sender: TObject); // Gerade zeichnen with Image1.Canvas do Pen.Color := Farbe; Pen.Width := Dicke; MoveTo(p1.X,p1.Y); LineTo(p2.X, p2.y); procedure TForm1.Button7Click(Sender: TObject); // Rechteck zeichnen with Image1.Canvas do Pen.Color := Farbe; Pen.Width := Dicke; Rectangle(p1.X,p1.Y,p2.X,p2.Y); procedure TForm1.Button8Click(Sender: TObject); // Kreis durch Zentrum p1 und Kreispunkt p2 zeichnen. var r : integer; r := Round(Sqrt((p2.X-p1.X)*(p2.X-p1.X) + (p2.y-p1.y)*(p2.yp1.y))); with Image1.Canvas do Pen.Color := Farbe; Pen.Width := Dicke; Ellipse(p1.X-r,p1.Y-r,p1.X+r,p1.Y+r); procedure TForm1.Button9Click(Sender: TObject); // Art der Farbfüllung auf "transparent" setzen.

Delphi Grundkurs Seite 67 with Image1.Canvas do Pen.Color := Farbe; Pen.Width := Dicke; Brush.Style := bsclear; procedure TForm1.Button10Click(Sender: TObject); // Art der Farbfüllung auf "ausgefüllt" setzen. with Image1.Canvas do Brush.Color := Farbe; Brush.Style := bssolid; procedure TForm1.Button19Click(Sender: TObject); //Programm beenden Application.Terminate; procedure TForm1.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer); // Rotwert verändern R := ScrollPos; Panel1.Caption := IntToStr(R); Farbe := RGB(R, G, B); with Image1.Canvas do Pen.Color := Farbe; Brush.Color := Farbe; Brush.Style := bssolid; Rectangle(Image1.Width-30, Image1.Height-30, Image1.Width, Image1.Height); procedure TForm1.ScrollBar2Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer); // Grünwert verändern G := ScrollPos; Panel2.Caption := IntToStr(G); Farbe := RGB(R, G, B); with Image1.Canvas do Pen.Color := Farbe; Brush.Color := Farbe; Brush.Style := bssolid;

Delphi Grundkurs Seite 68 Rectangle(Image1.Width-30, Image1.Height-30, Image1.Width, Image1.Height); procedure TForm1.ScrollBar3Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer); // Blauwert verändern B := ScrollPos; Panel3.Caption := IntToStr(B); Farbe := RGB(R, G, B); with Image1.Canvas do Pen.Color := Farbe; Brush.Color := Farbe; Brush.Style := bssolid; Rectangle(Image1.Width-30, Image1.Height-30, Image1.Width, Image1.Height); procedure TForm1.ScrollBar4Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer); // Stiftdicke ändern Dicke := ScrollPos; Panel4.Caption := IntToStr(Dicke); end.