Registriert seit: 21. Mai 2014
44 Beiträge
|
AW: Threads und TBitmaps
1. Sep 2014, 16:30
Die neue Art sieht so aus:
Aufruf:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
Paintthread := TPaintThread.create(false);
Paintthread.Image := Image1;
end;
Thread:
Delphi-Quellcode:
unit UThread;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, ExtCtrls;
type
Image = TImage;
TPaintThread = class(TThread)
private
Zeichenflaeche: TImage;
MyBild : TBitmap;
procedure zeichnen;
procedure SetImage( const Value: TImage);
protected
procedure Execute; override;
public
constructor Create(CreateSuspended: Boolean);
property Image: TImage read Zeichenflaeche write SetImage;
end;
implementation
constructor TPaintThread.Create(CreateSuspended: Boolean);
begin
inherited;
MyBild := TBitmap.create;
MyBild.LoadFromFile(' 1.bmp');
end;
procedure TPaintThread.Execute;
begin
While (Terminated = False) do
begin
Synchronize(Zeichnen);
sleep(1);
end;
end;
procedure TPaintThread.Zeichnen;
begin
Zeichenflaeche.Canvas.Draw(random(50) + 1,random(50) + 1,MyBild);
end;
procedure TPaintThread.SetImage( const Value: TImage);
begin
Zeichenflaeche := Value;
end;
end.
Das geht auch sehr gut.
Ist das in etwa so wie es richtig ist oder müssen nach wie vor Schutzoptionen wie TCriticalSection darin verwendet werden?
|
|
Zitat
|