Показать сообщение отдельно
Старый 27.01.2011, 18:02   #1
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений
(для 5,072 пользователей)
Вопрос Сенсоры и прямая линия.

Написал функцию отрисовки линии с помощью сенсора. По задумке она должна точно рисовать линию на подобие пейнтовской. Тоесть как бы "царапать" экран).
Но иногда она работает не корректно. А именно: с самого начала рисует линию из начала координат и принимает координаты конца предыдущей линии за начало новой линии. Исчезать она должна - это не баг.
program line;
uses sensor;

var x, y, xline, yline, pointer_x, pointer_y, first_pointer_x, first_pointer_y, pointer_time, pe: integer; 
    keyCode: integer; 
begin
    sensor.init;
  repeat
    SetColor(255, 255, 255);
    FillRect(0, 0, GetWidth, GetHeight);
    SetColor(0, 0, 0);
    keyCode:= GetKeyPressed;
        pe:=pointer_state;    
        pointer_x:=pointer_dragged_x;
        pointer_y:=pointer_dragged_y; 
 
        If pe>0 then begin
            DrawLine(first_pointer_x,first_pointer_y,pointer_x,pointer_y);
            DrawText('+',pointer_x,pointer_y);
            if pointer_time=0 then begin
                first_pointer_x:= pointer_dragged_x;
                first_pointer_y:= pointer_dragged_y;    
            end;
            if pointer_time>0 then begin
                pointer_x:= pointer_dragged_x;
                pointer_y:= pointer_dragged_y;    
            end;
            pointer_time:=pointer_time+1;
        end;
        if pe=0 then begin
                pointer_time:=0;
                first_pointer_x:= pointer_x;
                first_pointer_y:= pointer_y;
        end;
    Repaint;
  until (keyCode = KE_KEY0) or (KeyToAction(keyCode) = GA_FIRE); 
end.
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием