![]() |
|
|
#1
|
|||
|
|||
|
Я вожу по форме. Координаты курсора записываются в массив. Потом по БаттонКлику вырисовывается "дорожка" зеленого цвета. Зделал пример просто для тренировки.
Вопрос: почему не записываются (не успевают записываться) все координаты? И как можно используя эти же методы добиться записи в массив каждой точки где "прошел" курсор? Код:
type
Rec = record
a1,b1: integer;
end;
Tarr= array of Rec;
---------------------------
var
arr: Tarr;
i,j:INTEGER;
---------------------------
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
i:=i+1;
SetLength(arr,i+1);
arr[i].a1:=X;
arr[i].b1:=Y;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
j:=i;
for i:=1 to j do
Canvas.Pixels[arr[i].a1,arr[i].b1]:=clGreen;
end;
|
|
#2
|
||||
|
||||
|
пользуй moveto(), lineto().
|
|
#3
|
|||
|
|||
|
Цитата:
У меня цель не линии рисовать, а понять почему в даном случае они рисуются именнто так, а не иначе. И возможно ли Цитата:
|
|
#4
|
||||
|
||||
|
SetLength(arr,i+1); этот метод не добавляет в массив элементы, а каждый раз его создает, следовательно у тебя сохраняются записи только в i-ом элементе. Используй вместо массивов списки
|
|
#5
|
|||
|
|||
|
Да проблема в том, что действительно доходят не все координаты. Это особенность винды. Так что используй линию или веди мышку медленно.
|
|
#6
|
||||
|
||||
|
Цитата:
![]() пора спать идти........ Последний раз редактировалось Pilot_Red, 17.04.2011 в 23:58. |
|
#7
|
||||
|
||||
|
даже если не запоминать координаты мыши, а сразу в ее позиции рисовать точку, то в зависимости от скорости перемещения могут быть разрывы:
Код:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Canvas.Pixels[X, Y]:=clGreen; end; |
|
#8
|
|||
|
|||
|
ясно, спасибо за ответы
|