Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
|
Re: RiB - Reflect it Baby
2. Mär 2006, 14:32
Ok, ich bin jetzt soweit:
Delphi-Quellcode:
TLineObj = class(TSceneObject)
protected
procedure SetColor(v: TColor32); override;
function GetColor: TColor32; override;
public
Line: TLine;
SelPoint: Integer;
constructor Create(Owner: TScene; x1, y1, x2, y2: Single; FX: TEffect; Color: TColor32);
procedure Draw; override;
function GetIntersects(a, b: TFloatPoint): TZS; override;
procedure Changed; override;
end;
constructor TLineObj.Create(Owner: TScene; x1, y1, x2, y2: Single; FX: TEffect; Color: TColor32);
begin
inherited Create(Owner, FX, Color);
Line.a.X := x1;
Line.a.Y := y1;
Line.b.X := x2;
Line.b.Y := y2;
Changed;
end;
procedure TLineObj.Changed;
begin
Rect.Left := Min (Line.a.X, Line.b.X) - 5;
Rect.Right := Max (Line.a.X, Line.b.X) + 5;
Rect.Top := Min (Line.a.Y, Line.b.Y) - 5;
Rect.Bottom := Max (Line.a.Y, Line.b.Y) + 5;
end;
procedure TLineObj.Draw;
var
c: TColor32;
begin
if isSelected then
begin
FOwner.FObjectBMP.Canvas.Pen.Color := clRed;
FOwner.FObjectBMP.Canvas.Brush.Color := clRed;
FOwner.FObjectBMP.Canvas.Rectangle(round(Line.a.X)-4,
round(Line.a.Y)-4,
round(Line.a.X)+4,
round(Line.a.Y)+4);
FOwner.FObjectBMP.Canvas.Rectangle(round(Line.b.X)-4,
round(Line.b.Y)-4,
round(Line.b.X)+4,
round(Line.b.Y)+4);
end;
if isSelected then c := Color32(255,255,255)
else c := self.FColor;
FOwner.FObjectBMP.LineFS(Line.a.X,
Line.a.Y,
Line.b.X,
Line.b.Y,
c);
end;
procedure TLineObj.SetColor(v: TColor32);
begin
FColor := v;
end;
function TLineObj.GetColor: TColor32;
begin
result := FColor;
end;
function TLineObj.GetIntersects(a, b: TFloatPoint): TZS;
begin
//
end;
In der GetIntersects-Methodem muss ich eventuelle überschneidungen zurückliefern, oder ?
(In weiser (?) Vorraussicht auch: http://www.delphipraxis.net/internal...ct.php?t=76738  )
|
|
Zitat
|