unit C_Ball_V2;
{- [ITNERFACE]-Teil -----------------------------------------------------------}
interface
uses Windows, Classes, Graphics ;
function PointEllipse(Mittelpunkt : TPoint ; Winkel, ARadius : integer;
BRadius : integer = 0) : TPoint ;
function PointBezier(A, B, C, D : TPoint; Teilung, Schritt : Integer) : TPoint ;
type
{- Typendefinierung -----------------------------------------------------------}
TSite = (lsLeft, lsRight) ;
TPaintStyle = (psLine, psColored) ;
{- TVieleck -------------------------------------------------------------------}
TVieleck =
class
// [PRIVATE]-Teil
private
Mittelpunkt : TPoint ;
FVieleck :
array of TPoint ;
Canvas : TCanvas ;
// [PUBLIC]-Teil
public
constructor Create(AMittelpunkt : TPoint; ACanvas : TCanvas) ;
procedure Paint(AColor : TColor) ;
end ;
{- TBall ---------------------------------------------------------------------}
TBall =
class(TComponent)
// [PRIVATE]-Teil
private
FMittelpunkt : TPoint ;
FCanvas : TCanvas ;
Dreieck : TVieleck;
FPaintStyle : TPaintStyle ;
FbgColor : TColor ;
FLineColor : TColor ;
// [PUBLIC]-Teil
public
constructor Create(AOwner : TComponent) ;
overload;
override;
// Standard-Construktor
constructor Create(AOwner : TComponent; AMittelpunkt : TPoint;
ACanvas : TCanvas) ;
overload;
procedure Paint ;
procedure Clear ;
procedure Repaint ;
// [POTECTED]-Teil
protected
// [PUBLISHED]-Teil
published
property Canvas : TCanvas
read FCanvas
write FCanvas ;
property XMittelpunkt : Integer
read FMittelpunkt.x
write FMittelpunkt.x ;
property YMittelpunkt : Integer
read FMittelpunkt.y
write FMittelpunkt.y ;
property PaintStyle : TPaintstyle
read FPaintStyle
write ChangePaintStyle ;
property bgColor : TColor
read FbgColor ;
property LineColor : TColor
read FLineColor ;
end ;
procedure Register;
{- [IMPLEMENTATION]-Teil ------------------------------------------------------}
implementation
procedure Register;
begin
RegisterComponents('
Ball', [TBall]);
end;
{- TVieleck -------------------------------------------------------------------}
// Generiert TVieleck auf ACanvas mit AMittelpunkt
constructor TVieleck.Create(AMittelpunkt : TPoint; ACanvas : TCanvas) ;
begin
inherited Create;
Canvas := ACanvas ;
Mittelpunkt := AMittelpunkt ;
end ;
// Erstellt TVieleck aus den Daten
procedure TVieleck.Paint(AColor : TColor) ;
begin
Canvas.Pen.Width := 2 ;
Canvas.Pen.Color := AColor ;
Canvas.Polyline(FDreieck) ;
end ;
{- TBall ----------------------------------------------------------------------}
// Standard-Constructor
constructor TBall.Create(AOwner : TComponent) ;
begin
inherited Create(AOwner);
// geerbter Konstruktor
FCanvas :=
nil ;
// Zur Sicherheit
FMittelpunkt.x := -1 ;
// Zur Sicherheit
FMittelpunkt.y := -1 ;
// Zur Sicherheit
Dreieck := TVieleck.Create(FMittelpunkt, FCanvas) ;
end ;
constructor TBall.Create(AOwner : TComponent; AMittelpunkt : TPoint;
ACanvas : TCanvas) ;
begin
Create(AOwner) ;
// Standartwerte für Propertys
FbgColor := clWhite ;
FLineColor := clBlack ;
FLungColor := $008B82FF ;
FCanvas := ACanvas ;
FMittelpunkt := AMittelpunkt ;
end ;
// Zeichent
procedure TBall.Paint ;
begin
Dreieck.Paint(FLineColor) ;
end ;
// Löschte
procedure TBall.Clear ;
begin
Dreieck.Paint(FbgColor) ;
end ;
// Zeichnet neu
procedure TBall.Repaint ;
begin
// Löschen
Clear ;
// Neuzeichnen
Paint ;
end ;