Привет, Всем!
Заметил странности отображения ломанных линий с помощью DrawPath. При острых углах ломанной она начинает выходить за координаты точек излома. Как на рисунке:
Красным цветом построена линия с помощью DrawLine, зеленой с помощью DrawPath по одним и тем же координатам.
procedure TFMain.Button1Click(Sender: TObject);
var
Pa:TPathData;
p1,p2,p3,p4:TPointF;
begin
p1:=PointF(10,10);
p2:=PointF(200,20);
p3:=PointF(10,30);
p4:=PointF(400,40);
Pa:=TPathData.Create;
Pa.MoveTo(p1);
Pa.LineTo(p2);
Pa.LineTo(p3);
Pa.LineTo(p4);
PaintBox.Bitmap.Canvas.BeginScene;
PaintBox.Bitmap.Canvas.Stroke.Color:=claGreen;
PaintBox.Bitmap.Canvas.Stroke.Thickness:=1;//PenWidth;
PaintBox.Bitmap.Canvas.DrawPath(Pa,1.0);
PaintBox.Bitmap.Canvas.EndScene;
Pa.Free;
PaintBox.Bitmap.Canvas.BeginScene;
PaintBox.Bitmap.Canvas.Stroke.Color:=claRed;
PaintBox.Bitmap.Canvas.DrawLine(p1,p2,1.0);
PaintBox.Bitmap.Canvas.DrawLine(p2,p3,1.0);
PaintBox.Bitmap.Canvas.DrawLine(p3,p4,1.0);
PaintBox.Bitmap.Canvas.DrawLine(p1,p2,1.0);
PaintBox.Bitmap.Canvas.EndScene;
end;
Можно заметить что зеленая линия немножко выходит за красную. Этого можно избежать только если строить линию с разрывами.
Подозреваю что это связано с радиусом загиба кривой, вот только где его убрать?
Можно как-нибудь элегантно сделать чтобы кривая линия строилась точно по координатам с помощью DrawPath?