Показать сообщение отдельно
  #6  
Старый 24.05.2013, 11:31
Аватар для Freeman
Freeman Freeman вне форума
Местный
 
Регистрация: 05.10.2012
Адрес: Санкт-Петербург
Сообщения: 577
Версия Delphi: 6
Репутация: выкл
По умолчанию

Цитата:
Сообщение от kaktusad
нужно рисовать новый прямоугольник и стирать старый, но чтобы весь рисунок не перерисовывать, так как приложение подвисает.
Рисуй в режиме XOR:
Код:
type
  TMainForm = class(TForm)
    PaintBox1: TPaintBox;
    procedure FormCreate(Sender: TObject);
    procedure PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    FPrevX, FPrevY: Integer;
  end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
  FPrevX := -1;
  FPrevY := -1;
end;

procedure TMainForm.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
  with TPaintBox(Sender).Canvas do
  begin
    with Brush do
    begin
      Color := clTeal;
      Style := bsSolid;
    end;
    with Pen do
    begin
      Color := clYellow;
      Mode := pmXor;
    end;
    if (FPrevX > 0) and (FPrevY > 0) then
      Rectangle(FPrevX - 10, FPrevY - 8, FPrevX + 10, FPrevY + 8);
    Rectangle(X - 10, Y - 8, X + 10, Y + 8);
  end;
  FPrevX := X;
  FPrevY := Y;
end;
Ответить с цитированием