Задать вопрос
@samsungovetch

PascalABC — Режим передвижения кисти без оставления следа?

uses graphabc,crt,events;

var x,y:integer;
    c:char;
    drawmode: string;

const WH = 600;
      WW = 600;
      color_px = clBlack;

procedure draw_px(col:integer);
begin
  SetPenColor(col);
  SetBrushColor(col);
  rectangle(x,y,x+10,y+10)
end;



procedure kDown(key: integer); { ????????? ????????? ??????? ?????? }
begin
  if drawmode = 'no' then draw_px(clWhite);   //ðåæèì ëàñòèêà
  if key=VK_Left then x:=x-10; { ????? }
  if key=VK_Right then x:=x+10; { ?????? }
  if key=VK_Up then y:=y-10; { ????? }
  if key=VK_Down then y:=y+10; { ???? }
  if key=VK_Escape then CloseWindow; { ??????? ???? }
  if key=VK_Space then
     begin
      if drawmode = 'yes' then
        drawmode:='no'
      else
        if drawmode = 'no' then
           drawmode:='yes';
    end;
  if key=VK_Tab then
    begin
      if PenStyle = psClear then
        SetPenStyle(psSolid)
      else
        if PenStyle = psSolid then
          SetPenStyle(psClear);
    end;

  SetWindowCaption('x='+IntToStr(x)+' y='+IntToStr(y) + ' flag=' + drawmode );
  draw_px(clBlack);
end;


begin
  setWindowSize(WH,WW);
  x := WW div 2;
  y := WH div 2;
  drawmode:= 'yes';
  OnKeyDown:=kDown;

end.


Сделано два режима - рисующий и стирающий. Как сделать не рисующий и не стирающий, просто передвижение чёрного квадрата? Подсказали, что можно пером SetPenStyle(psClear), но я не понимаю, куда его здесь девать. Помогите, пожалуйста
  • Вопрос задан
  • 64 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Stepik
    Pascal с нуля
    1 неделя
    Далее
  • АПОК
    Инженер-программист - курс переподготовки
    1 месяц
    Далее
Решения вопроса 1
2ord
@2ord
Во времена Турбо Паскаля, помню, был такой режим отрисовки XOR, который при повторной отрисовке по тем же координатам рисовал пиксели либо стирал их. Это возможно когда изображение на холсте имеет лишь черный и белый цвета.
То есть перед изменением координат надо "стереть" объект, передвинуться и тогда рисовать на новом месте.
Надеюсь, помог.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы