Ich bin auf diesen Thread gestoßen, weil ich auch nicht nachvollziehen kann, wie TCanvas.Rectangle zeichnet.
Ich hoffe, es ist ok, dass ich hier weitermache, aber die Antworten passen z.T. schon gut.
(Die Info mit der rechten unteren Ecke hilft mir zu verstehen, wieso ein TImage-ClipRect von 0..width/height geht, also 1 Pixel zuviel)
Ich will TImages mit unterschiedlichen Linienbreiten umranden.
Delphi-Quellcode:
Canvas.Brush.Color := FColor;
Canvas.FillRect(Canvas.ClipRect);
Canvas.Pen.Color := FBorderColor;
Canvas.Pen.Width := FBorderWidth;
x1 := Canvas.ClipRect.Left;
y1 := Canvas.ClipRect.Top;
x2 := Canvas.ClipRect.Right;
y2 := Canvas.ClipRect.Bottom;
Canvas.Rectangle(x1, y1, x2, y2);
Mit Linienbreite = 1 klappt das, >1 wird's mystisch (für mich)
Ich habe mit verschiedenen Linienbreiten und x/y-Versatzkombinationen getestet,
aber der erkenntnismäßige Durchbruch ist ausgeblieben.