• No results found

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

N/A
N/A
Protected

Academic year: 2021

Share "uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Printers, ExtCtrls, StdCtrls;"

Copied!
7
0
0

Loading.... (view fulltext now)

Full text

(1)

Beispiel 19 Programm P19 (\Grafikbeispiele) Quadrate

Problem: Eingabe: Anzahl der Quadrate (= N) mit InputBox (0,0) d d a Verschiebungsteil d := a div N; (a,a) a Formulardesign: Listing: unit P19_U; // Quadrate zeichnen interface uses

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

(2)

TForm1 = class(TForm) Image1 : TImage;

Button1: TButton; // Eingabe Button2: TButton; // Ausführen Button3: TButton; // Drucken Button4: TButton; // Beenden Bevel1 : TBevel;

procedure FormActivate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} var a, // Quadratseite

N, // Anzahl der Quadrate d : Integer; // d = a div N

procedure ImClear; // Löscht das Image begin

with Form1.Image1 do begin

Canvas.Pen.Color := clBlack; Canvas.Brush.Color := clWhite; Canvas.Brush.Style := bsSolid; Canvas.Rectangle(0,0,a,a); Canvas.Brush.Style := bsClear; end; end;

procedure TForm1.FormActivate(Sender: TObject); // Image initialisieren

begin

with Image1 do begin

if Width > Height then begin Height := Width; a := Width; end else begin Width := Height; a := Height; end; end;

(3)

ImClear; end;

procedure TForm1.Button1Click(Sender: TObject); // Anzahl N der Quadrate eingeben

var S : String; Code : Integer; begin ImClear; S := InputBox('Eingabe', 'Anzahl: ', '10'); Val(S,N,Code);

if (Code <> 0) or (N < 0) or (Frac(N) <> 0) then begin ShowMessage('Falsche Eingabe!');

Exit; end; end;

procedure TForm1.Button2Click(Sender: TObject); // Quadrate zeichnen

var I : Integer; begin

d := Round(a div N);

for I := 1 to N-1 do begin with Image1.Canvas do begin MoveTo(d*I,0); LineTo(a,d*I); LineTo(a-d*I,a); LineTo(0,a-d*I); LineTo(d*I,0); end; end; end;

procedure TForm1.Button3Click(Sender: TObject); // Formular ausdrucken

begin

PrintScale := poProportional; Print;

end;

procedure TForm1.Button4Click(Sender: TObject); // Programm beenden

begin

Application.Terminate; end;

(4)

Beispiel 20 Programm P20 (\Grafikbeispiele) Farbdemo

Problem: 1. Kreissektor zeichnen (in Formular) (X1,Y1) (X4,Y4) Winkel b a (M.X,M.Y) (X3,Y3) Radius (X2,Y2)

M.X := Width div 2; X1 := M.X – Radius; M.Y := Height div 2; Y1 := M.Y – Radius; RMax :=Height div 2; X2 := M.X + Radius; a := Round(Radius*Cos(Winkel*PI/180)); Y2 := M.Y + Radius; b := Round(Radius*Sin(Winkel*PI/180)); X3 := M.X + Radius;

Y3 := M.Y; X4 := M.X + a; Y4 := M.Y – b; pie(X1,Y1,X2,Y2,X3,Y3,X4,Y4);

2. Radius, Zentriwinkel, Rot, Grün, Blau über ScrollBars verändern. Formulardesign:

(5)

Listing:

unit P20_U; // Farbdemo interface uses

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

TForm1 = class(TForm)

Label1 : TLabel; // Beschriftungen Label2 : TLabel;

Label3 : TLabel; Label4 : TLabel; Label5 : TLabel;

ScrollBar1: TScrollBar; // Radius verändern ScrollBar2: TScrollBar; // Zentriwinkel verändern ScrollBar3: TScrollBar; // Rotwert verändern ScrollBar4: TScrollBar; // Grünwert verändern ScrollBar5: TScrollBar; // Blauwert verändern Panel1 : TPanel; // Radis anzeigen Panel2 : TPanel; // Zentriwinkel anzeigen Panel3 : TPanel; // Rotwert anzeigen Panel4 : TPanel; // Grünwert anzeigen Panel5 : TPanel; // Blauwert anzeigen Button1 : TButton; // Beenden

procedure FormActivate(Sender: TObject);

procedure ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer);

procedure ScrollBar2Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer);

procedure ScrollBar3Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer);

procedure ScrollBar4Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer);

procedure ScrollBar5Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer);

procedure Button1Click(Sender: TObject); private { Private declarations }

public { Public declarations } end;

var

Form1: TForm1; implementation {$R *.DFM}

var M : TPoint; // Kreismittelpunkt RMax : Integer; // maximaler Radius

(6)

Radius, // aktueller Kreisradius Winkel : Integer; // aktueller Zentriwinkel R, G, B : Byte; // Rot, Grün, Blau

Farbe, // aktuelle Farbe FFarbe : TColor; // Farbe Formular

procedure TForm1.FormActivate(Sender: TObject); // Initialisieren

begin

WindowState := wsMaximized; Form1.Scaled := True;

if (Screen.Width<>800) then Form1.ScaleBy(Screen.Width, 800); M.X := Width div 2;

M.Y := Height div 2; // ursprünglich div 3 RMax := Height div 2; // ursprünglich div 3 Scrollbar1.Max := RMax;

Label1.Caption := 'Radius (0 - '+IntToStr(RMax)+')'; R := 0; G := 0; B := 0;

Radius := RMax; Winkel := 360; end;

procedure KreisSektor(var M : TPoint; Radius, Winkel : Integer; Farbe : TColor);

// Kreissektor zeichnen

var X1, Y1, X2, Y2, X3, Y3, X4, Y4 : Integer; begin X1 := M.X - Radius; Y1 := M.Y - Radius; X2 := M.X + Radius; Y2 := M.Y + Radius; X3 := M.X + Radius; Y3 := M.Y; X4 := M.X + Round(Radius*Cos(Winkel*Pi/180)); Y4 := M.Y - Round(Radius*Sin(Winkel*PI/180)); with Form1.Canvas do begin

Pen.Color := Farbe; Brush.Color := Farbe; Brush.Style := bsSolid;

if Winkel > 0 then pie(x1, Y1, X2, Y2, X3, Y3, X4, Y4); end;

end;

procedure TForm1.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer);

// Kreisradius verändern begin

FFarbe := Form1.Color;

KreisSektor(M, RMax, 360, FFarbe);

Radius := ScrollPos; Panel1.Caption := IntToStr(Radius); KreisSektor(M, Radius, Winkel, Farbe);

(7)

end;

procedure TForm1.ScrollBar2Scroll(Sender: TObject; ScrollCode:

TScrollCode; var ScrollPos: Integer);

// Zentriwinkel verändern begin

FFarbe := Form1.Color;

KreisSektor(M, RMax, 360, FFarbe);

Winkel := ScrollPos; Panel2.Caption := IntToStr(Winkel); KreisSektor(M, Radius, Winkel, Farbe);

end;

procedure TForm1.ScrollBar3Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer);

// Rotwert verändern begin

R := ScrollPos; Panel3.Caption := IntToStr(R); Farbe := RGB(R, G, B);

KreisSektor(M, Radius, Winkel, Farbe); end;

procedure TForm1.ScrollBar4Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer);

// Grünwert verändern begin

G := ScrollPos; Panel4.Caption := IntToStr(G); Farbe := RGB(R, G, B);

KreisSektor(M, Radius, Winkel, Farbe); end;

procedure TForm1.ScrollBar5Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer);

// Blauwert verändern begin

B := ScrollPos; Panel5.Caption := IntToStr(B); Farbe := RGB(R, G, B);

KreisSektor(M, Radius, Winkel, Farbe); end;

procedure TForm1.Button1Click(Sender: TObject); // Programm beenden

begin

Application.Terminate; end;

References

Related documents

Methods: It was a cross sectional study carried out between April and August 2016 within three medical bacteriology laboratories: Institut National d’Hygiène

Another variable from the same source that we take into account is crises tally (CRISESTALLY), which represents the sum of each crisis in a particular year.

Second, we test three more specific predictions of the worker-learning explanation: (i) that learning and therefore wage growth is higher in foreign/large firms; (ii) that

Figure 43 SEM micrographs of fracture surface of coir composites: (a) Sample cut at 0° to the bulk composite orientation (longitudinal) and (b) samples cut at 90° to bulk

EMR EMT AEMT Paramedic Airway Management, Respiration and Artificial Ventilation Applies knowledge (fundamental depth, foundational breadth) of general anatomy and

Fresno Instructions - At the same time you provide the property bond package to the AUSA for review and approval, deliver the original bond package with a cover letter/memo to

This year’s conference is co-sponsored by El Camino College’s Childhood Education Department, Beach Cities Association for the Education of Young Children, Discount School