Entwickler-Ecke

Multimedia / Grafik - geräteunabhängige Ausgabe


Claus - Mo 17.02.03 19:38
Titel: geräteunabhängige Ausgabe
Hallo zusammen,

ich bin eine Delphi-Anfänger und versuche mit zur Zeit mit den Grundlagen. Ein kleines Programm habe ich schon konstruiert. Damit soll eine Grafik auf dem Bildschirm und den Drucker ausgegeben werden. Die grafischen Elemente erzeuge ich in eigenen Prozeduren:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure PA (x1,y1,a,h,beta1,beta2 :single); // Parallelogramm
var x2,y2,x3,y3,x4,y4 : single;
begin
x2 := x1+a;
y2 := y1-a*tan(beta1);
x3 := x2+h/tan(beta2);
y3 := y2-h;
x4 := x1+h/tan(beta2);
y4 := y1-h;
Form1.Paintbox1.Canvas.Polygon
     ([point(round(x1),round(y1)),
       point(round(x2),round(y2)),
       point(round(x3),round(y3)),
       point(round(x4),round(y4))])
end;

Zur Ausgabe verwende ich dann die Prozedur in der Form:

Quelltext
1:
2:
3:
4:
with Form1.Paintbox1.Canvas do;
moveto ..
lineto ...
PA(...)

Wie kriege ich jetzt die Geräteangabe Form1.Paintbox... aus der Prozedur PA raus?? Wie kann ich die dahin übergeben??

Für eine Hilfe wäre ich sehr dankbar.
Claus

Moderiert von user profile iconTino: Code-Tags hinzugefügt.


AndyB - Mo 17.02.03 19:42

Du kannst der Prozedur einen weiteren Parameter übergeben, der vom Typ TCanvas ist.

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure PA (Canvas: TCanvas; x1,y1,a,h,beta1,beta2 :single); // Parallelogramm 
...
begin
  ...
  Canvas.Polygon(
    [point(round(x1),round(y1)), 
     point(round(x2),round(y2)), 
     point(round(x3),round(y3)), 
     point(round(x4),round(y4))]);
end;

PA(Form1.PaintBox.Canvas, 10, 20, 30, 40, 50, 60);


Claus - Di 18.02.03 07:50

Danke für den Hinweis! :D