Einzelnen Beitrag anzeigen

Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Problem bei Rechteck zeichnen (mit PaintBox)

  Alt 28. Dez 2010, 16:26
Hallo,

wie Thomas bereits geschrieben hatte, ist es besser
in der Paint Methode (onPaint Ereignis) zu malen und mit invalidate den Paintbox Inhalt
zu löschen. Es wird dann automatisch ein Neuzeichnen angestossen.

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    PaintBox1: TPaintBox;
    procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure PaintBox1Paint(Sender: TObject);
  private
    startX, startY, endX, endY: Integer;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  startX := x;
  startY := y;
end;

procedure TForm1.PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  endX := x;
  endY := y;
  invalidate;
end;

procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
  with (sender as TPaintbox) do
    begin
      Canvas.MoveTo(startx,startY);
      Canvas.Rectangle(endX,endY,startX,startY);
    end;
end;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat