ваш код стирает экран, а затем каждый раз перерисовывает одну линию.
(Graphics.fillRect(0,0,width,length)
в paint()
стирает экран)
строка всегда начинается в центре экрана, потому что x1
и y1
никогда не меняются.
пользовательский ввод изменяет только конечную точку линии.
это не то, что вы, кажется, хотите сделать.
Есть 2 способа сделать то, что вы просите:
- запоминать каждый пользовательский ввод (в векторе), очищать экран и перерисовывать все строки каждый раз, когда вы перерисовываете. не совсем эффективен с точки зрения памяти или мерцания.
- прекратите стирать экран и просто нарисуйте новую линию для каждого пользовательского ввода.
в обоих случаях вы, вероятно, захотите сделать x1=x2;y1=y2;
после каждого вызова drawLine();
, чтобы переместить начало следующей строки в конец предыдущей строки.
Я также думаю, что вы хотите внедрить keyRepeated()
для улучшения взаимодействия с пользователем.
Вы также можете изменить клип (используя Graphics.setClip()
) при перерисовке, чтобы телефон обновлял только небольшую часть экрана для повышения производительности.
Если вы хотите использовать двойную буферизацию (сохранить одно изображение в памяти, нарисовать его, а затем распечатать его на экране), вам все равно нужно прекратить стирать изображение (с помощью fillRect()
) каждый раз, когда вы хотите нарисовать к этому.
Чтобы использовать двойную буферизацию, вам нужно Image.getGraphics()
и Graphics.drawImage()