unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, StdCtrls, pngimage, PngImageProcessor, Math, IGDIPlus,
JaContainers;
type
TMyCalThread = class(TThread)
public
IsWorking: Boolean;
FDestBmp: TPNGObject;
protected
procedure Execute; override;
end;
TForm1 = class(TForm)
Image1: TImage;
Image2: TImage;
Image3: TImage;
Image4: TImage;
Image5: TImage;
Timer1: TTimer;
Button1: TButton;
procedure FormPaint(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
public
FCalThread: TMyCalThread;
end;
var
Form1: TForm1;
GSyn: TSyncObject;
implementation
{$R *.dfm}
{ TMyCalThread }
procedure TMyCalThread.Execute;
var
LSrcBmp: TPNGObject;
LTmpBmp: TPNGObject;
begin
inherited;
LSrcBmp := TPNGObject.Create;
LTmpBmp := TPNGObject.Create;
FDestBmp := TPNGObject.Create;
LSrcBmp.LoadFromFile('3.png');
// ! 此方法对bmp无效,因为bmp调用了窗口的东西,除非自己实现bmp的文件处理
while not Terminated do
begin
if IsWorking then
begin
SetPngImageSize(Random(300) + 200, Random(150) + 50, LTmpBmp);
DoRoomPng(LSrcBmp, LTmpBmp);
GSyn.Lock;
try
FDestBmp.Assign(LTmpBmp);
finally
GSyn.Unlock;
end;
IsWorking := False;
end;
Sleep(10);
end;
end;
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled := True;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
GSyn := TSyncObject.Create;
GSyn.ThreadSafe := True;
FCalThread := TMyCalThread.Create(True);
FCalThread.FreeOnTerminate := True;
FCalThread.IsWorking := False;
FCalThread.Resume;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
//FreeAndNil(GSyn);
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
if FCalThread.FDestBmp <> nil then
begin
GSyn.Lock;
try
Canvas.Draw(100, 100, FCalThread.FDestBmp);
finally
GSyn.Unlock;
end;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if not FCalThread.IsWorking then
begin
FCalThread.IsWorking := True;
Invalidate;
end;
end;
end.
多线程处理图片,bmp不支持,png支持
原创
©著作权归作者所有:来自51CTO博客作者mb643d15e043b20的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:png图片做窗口
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
神策SDK不支持Windows客户端全埋点,怎么实现用户统计分析?
ClkLog针对神策不支持全埋点的客户端实现用户访问基础统计分析-1
C++客户端 C#客户端 C++客户端用户分析 C#客户端用户分析 windows客户端用户分析 -
ie6 不支持 .png
ie6 不支持 .png
职场 休闲 ie6 不支持 .png