无需深入了解“为什么它有效”,您就可以实现 1 像素虚线(如TLine
)通过在坐标上添加(或减去)一半线宽。当我追踪什么时我得到了这个想法TLine
做;在渲染过程中它使用
InflateRect(Result, -(FStroke.Thickness / 2), -(FStroke.Thickness / 2));
对线坐标应用 0.5 修改,得到相同的结果。
procedure TForm24.PaintBox1Paint(Sender: TObject; Canvas: TCanvas);
var
a: integer;
begin
Canvas.BeginScene;
try
Canvas.Stroke.Dash := TStrokeDash.Dot;
for a := 0 to 10 do
Canvas.DrawLine(PointF(a * 20 + 0.5, 0.5), PointF(a * 20 + 0.5, 200.5), 1);
for a := 0 to 10 do
Canvas.DrawLine(PointF(0.5, a * 20 + 0.5), PointF(200.5, a * 20 + 0.5), 1);
Canvas.DrawLine(PointF(0.5, 0.5), PointF(200.5, 200.5), 1);
Canvas.DrawEllipse(RectF(5.0, 5.0, 195.5, 195.5), 1);
finally
Canvas.EndScene;
end;
end;
产生这个结果:
放大镜视图为 500%
编辑2018.02.23:
另一种值得测试的方法是改变表格 Quality
财产给HighPerformance