Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
Delphi XE3 Enterprise
|
AW: Objekt-Regionen auf einer Canvas
2. Jan 2011, 21:06
Ich würde einiges anders machen, aber so läuft es erst mal wie gewünscht:
Delphi-Quellcode:
procedure TPerson.Draw;
begin
Canvas.Brush.Style:= bsSolid;
if MouseOver then
Canvas.Brush.Color:= clYellow else
Canvas.Brush.Color:= clWhite;
Canvas.Rectangle(FirstPos.X, FirstPos.Y, LastPos.X, LastPos.Y);
end;
procedure TPerson.DrawSelection;
begin
Canvas.Brush.Style:= bsSolid;
Canvas.Brush.Color:= clBlue;
Canvas.Rectangle(FirstPos.X, FirstPos.Y, LastPos.X, LastPos.Y);
end;
function TPerson.GetRegion(X,Y: Integer): Boolean;
begin
if PTinRegion(Region,X,Y) then
Result:= True else Result:= False;
end;
constructor TFamilyTree.Create(AOffset: TBitmap; ACanvas: TCanvas);
var
i: Integer;
Person: TPerson;
begin
inherited Create;
Self.Canvas:= ACanvas;
Self.Offset:= AOffset;
Self.Offset.PixelFormat:= pf32Bit;
Self.Width:= 800;
Self.Height:= 550;
Self.Objekt:= -1;
for i:= 0 to 2 do
begin
Person:= TPerson.Create(ACanvas, Point(0,0));
SetPerson(Add(Person));
end;
TPerson(Self.Items[0]).FirstPos:= Point(10, 10);
TPerson(Self.Items[0]).LastPos:= Point(200, 50);
TPerson(Self.Items[0]).SetRegion;
TPerson(Self.Items[1]).FirstPos:= Point(10, 80);
TPerson(Self.Items[1]).LastPos:= Point(200, 130);
TPerson(Self.Items[1]).SetRegion;
TPerson(Self.Items[2]).FirstPos:= Point(10, 160);
TPerson(Self.Items[2]).LastPos:= Point(200, 200);
TPerson(Self.Items[2]).SetRegion;
end;
Thomas Wassermann H₂♂ Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂♂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
|
|
Zitat
|