Ich habe die Paint-Methode etwas verändert. So schaut der Rahmen m.E. sehr hübsch aus und ist sowohl vor hellem als auch vor dunklem Hintergrund sehr gut erkennbar:
Delphi-Quellcode:
procedure TSelection.Paint;
var
i: Integer;
P: Array [0 .. 2] of TPoint;
Size: Integer;
begin
inherited;
Size := Min(FSelRect.Right - FSelRect.Left, FSelRect.Bottom - FSelRect.Top);
if Size > C_SIZE then
Size := C_SIZE;
Canvas.Brush.Style := bsClear;
Canvas.Pen.Style := psAlternate;
Canvas.Pen.Color := clFuchsia;
Canvas.Pen.Mode := pmMergePenNot;
Canvas.Rectangle(FSelRect);
if FHitRegion = 0 then
begin
Canvas.Brush.Style := bsSolid;
Canvas.Brush.Color := clBlack;
Canvas.Pen.Style := psAlternate;
Canvas.Pen.Mode := pmCopy;
P[0].X := FSelRect.Left;
P[0].Y := FSelRect.Top;
P[1].X := FSelRect.Left + Size;
P[1].Y := FSelRect.Top;
P[2].X := FSelRect.Left;
P[2].Y := FSelRect.Top + Size;
Canvas.Polygon(P);
end;
if FHitRegion = 1 then
begin
Canvas.Brush.Style := bsSolid;
Canvas.Brush.Color := clBlue;
Canvas.Pen.Style := psAlternate;
Canvas.Pen.Mode := pmCopy;
P[0].X := FSelRect.Right - 1;
P[0].Y := FSelRect.Bottom - 1;
P[1].X := P[0].X - Size;
P[1].Y := P[0].Y;
P[2].X := P[0].X;
P[2].Y := P[0].Y - Size;
Canvas.Polygon(P);
end;
end;