@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), но я не понимаю, куда его здесь девать. Помогите, пожалуйста
  • Вопрос задан
  • 60 просмотров
Решения вопроса 1
Во времена Турбо Паскаля, помню, был такой режим отрисовки XOR, который при повторной отрисовке по тем же координатам рисовал пиксели либо стирал их. Это возможно когда изображение на холсте имеет лишь черный и белый цвета.
То есть перед изменением координат надо "стереть" объект, передвинуться и тогда рисовать на новом месте.
Надеюсь, помог.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы