Ich dreh´ am
Rad...
Eigentlich will ich berechnete Rects auf dem Canvas darstellen und die Berechnungen visuell prüfen.
Das passte aber alles irgendwie nicht, obwohl die Berechnungen eigentlich korrekt sein mussten.
Also habe ich heute Scrennshots vergrößert und genauer angesehen.
Ergebnis: Ungerade Linienbreiten (ich wollte 1 Pixel) werden verwaschen gezeichnet (mind. 2 Pixel).
Gerade Linienbreiten sind korrekt dargestellt.
Gibt es eine Lösung für das Problem?
Gibt es das Problem noch in XE5?
Die Screenshots müssen leider vergrößert werden, um das genau zu erkennen.
Delphi-Quellcode:
var
I: Integer;
p1: TPointF;
p2: TPointF;
W: Single;
begin
W := 4; // 1 bis 4
Canvas.BeginScene;
Canvas.Clear(claWhitesmoke);
Canvas.Stroke.Kind := TBrushKind.bkSolid;
Canvas.Stroke.Color := claBlack;
Canvas.StrokeThickness := W;
for I := 0 to 50 do
begin
p1.Create(I * (W + 1) + 10, I * W + 10); // 1 Pixel Abstand zwischen den Linien
p2.Create(I * (W + 1) + 10, I * W + 10 + 100);
Canvas.DrawLine(p1, p2, 1);
end;
// ...
Canvas.EndScene;
end;