вообщем есть функция рисующая линию
delphi Код:
procedure TLinePainter.PaintLine;
var
i,path:integer;
v:real;
x,y:integer;
begin
i:=abs(Start.X - Finish.X);
path:=abs(Start.Y - Finish.Y);
if path<i then path:=i;
if path=0 then exit;
for i:=0 to path do
begin
v:=(i / path);
x:=Start.x + Round((Finish.x - Start.x) * v);
y:=Start.y + Round((Finish.y - Start.y) * v);
Form.Scene.Canvas.Pixels[x,y]:=clBlack;
end;
end;
первая линия на рисунке - нарисованая этой функцией, а вторая - так как надо нарисовать.
проще гря надо рисовать линию которая не может по-диагонали двигатся