Registriert seit: 25. Okt 2006
83 Beiträge
Delphi XE3 Professional
|
Re: RiB - Reflect it Baby
28. Aug 2009, 10:35
Ich muss sagen das Programm macht einem Spaß, es ist echt super gemacht
So, ich möchte ein Stück Code aus deinem Quelltext "klauen" bzw. verstehen. Und zwar handelt es sich um die Funktion, dass ein Objekt mit einem Auswahlrahmen umgeben wird wenn man darüber fährt. So wie es aussieht hast du das mit einem Timer gelöst, mir erschließt sich jedoch nicht wie du den Rahmen zeichnest.
Hier der Ausschnitt:
Delphi-Quellcode:
procedure TScene.OnStippleTimer(Sender: TObject);
begin
if Assigned(FMouseOver) then
begin
FStippleCount := FStippleCount + 0.4;
DrawFrame;
Redraw;
end
else
begin
DrawFrame;
Redraw;
FStippleTimer.Enabled := false;
end;
end;
procedure TScene.DrawFrame;
var
sel, moov: TFloatRect;
begin
FFrameBMP.Clear(0);
FFrameBMP.BeginUpdate;
if Assigned(FSelection) then
begin
sel := FSelection.Rect;
FFrameBMP.LineS(round(sel.Left), round(sel.Top), round(sel.Right), round(sel.Top), Color32(0,127,255));
FFrameBMP.LineS(round(sel.Right), round(sel.Top), round(sel.Right), round(sel.Bottom), Color32(0,127,255));
FFrameBMP.LineS(round(sel.Right), round(sel.Bottom), round(sel.Left), round(sel.Bottom), Color32(0,127,255));
FFrameBMP.LineS(round(sel.Left), round(sel.Bottom), round(sel.Left), round(sel.Top), Color32(0,127,255));
end;
if Assigned(FMouseOver) then
begin
moov := FMouseOver.Rect;
FFrameBMP.StippleCounter := FStippleCount;
FFrameBMP.LineFSP(round(moov.Left), round(moov.Top), round(moov.Right), round(moov.Top));
FFrameBMP.LineFSP(round(moov.Right), round(moov.Top), round(moov.Right), round(moov.Bottom));
FFrameBMP.LineFSP(round(moov.Right), round(moov.Bottom), round(moov.Left), round(moov.Bottom));
FFrameBMP.LineFSP(round(moov.Left), round(moov.Bottom), round(moov.Left), round(moov.Top));
end;
FFrameBMP.EndUpdate;
end;
procedure TScene.Redraw;
begin
FObjectBMP.DrawTo(Display);
FFieldBMP.DrawTo(Display);
FFrameBMP.DrawTo(Display);
Control.Refresh;
end;
|