Thema: Delphi paintbox "fixieren"

Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#6
  Alt 2. Nov 2002, 13:56
Moin Stephan,

wieder ein Beispiel.

Code:
[b]type[/b]
  TForm1 = [b]class[/b](TForm)
    PaintBox1: TPaintBox;
    [b]procedure[/b] PaintBox1Paint(Sender: TObject);
    [b]procedure[/b] FormDestroy(Sender: TObject);
  [b]private[/b]
    [color=#000080]{ Private-Deklarationen }[/color]
    FbmpWork : TBitmap;
    [b]procedure[/b] SavePaintBox;
  [b]public[/b]
    [color=#000080]{ Public-Deklarationen }[/color]
  [b]end[/b];

[b]var[/b]
  Form1: TForm1;

[b]implementation[/b]

[color=#000080]{$R *.DFM}[/color]

[b]procedure[/b] TForm1.SavePaintBox;

[b]var[/b]
  rtWork : TRect;

[b]begin[/b]
  [b]if[/b] Assigned(FbmpWork) [b]then[/b]
  [b]begin[/b]
    FreeAndNil(FbmpWork);
  [b]end[/b];
  FbmpWork       := TBitmap.Create;
  FbmpWork.Width := PaintBox1.Width;
  FbmpWork.Height := PaintBox1.Height;
  rtWork.Left  := 0;
  rtWork.Top   := 0;
  rtWork.Right := FbmpWork.Width;
  rtWork.Bottom := FbmpWork.Height;
  FbmpWork.Canvas.CopyRect(rtWork,PaintBox1.Canvas,PaintBox1.ClientRect);
[b]end[/b];

[b]procedure[/b] TForm1.PaintBox1Paint(Sender: TObject);
[b]begin[/b]
  [b]if[/b] Assigned(FbmpWork) [b]then[/b]
  [b]begin[/b]
    PaintBox1.Canvas.Draw(0,0,FbmpWork);
  [b]end[/b];
[b]end[/b];

[b]procedure[/b] TForm1.FormDestroy(Sender: TObject);
[b]begin[/b]
  [b]if[/b] Assigned(FbmpWork) [b]then[/b]
  [b]begin[/b]
    FreeAndNil(FbmpWork);
  [b]end[/b];
[b]end[/b];
Wenn SavePaintBox aufgerufen wird, wir der Inhalt der Paintbox in eine Bitmap gesichert, und soweit diese etwas enthält, im OnPaint der PaintBox angezeigt.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat