Einzelnen Beitrag anzeigen

Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#3

AW: Objekt-Regionen auf einer Canvas

  Alt 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)
  Mit Zitat antworten Zitat