求助求助,如何把FLASH文件中某一帧的画面抓下来???(200分)

金洪

Unregistered / Unconfirmed
GUEST, unregistred user!
如何把FLASH文件中某一帧的画面抓下来,并可另存为bmp或jpg格式???
希望高手能够帮忙,最好给出例子!!![8D]
 
你要编程实现吗?还是截取而已?
 
当然是通过编程实现啦!情赐教![8D]
 
这个问题我问过三次了,还是没有人回答;如果有,我再加上50分
 
那,让我们祈求上帝吧!!!
 
Help!Help!!!!!!
 
用ShockwaveFlash的ActiveX控件,可以一帧一帧的显示
然后抓下,另存为
 
同意楼上
 
我的问题就是如何把某一帧抓下来保存!!!
 
难道没有人帮我吗?
分数还可以增加!!!!
 
难道这个问题没办法实现吗?希望高手指点!!!
 
》并可另存为bmp或jpg格式???
简单的办法是copy屏幕,Print Screen,
粘贴到图画编辑器中,任你处理 [:)]
 
不行,我要的是通过程序代码把SWF文件中的某一帧画面保存,不要其他窗口的图像!!!
 
没人帮我吗???
 
富翁都休假了吗???
 
继续关注
 
用ShockwaveFlash的ActiveX控件,显示指定帧。
用form1.Canvas.CopyRect的方法,把那块内容copy到你的图形缓冲区,就可以存成bmp了
 
unit Unit1;

interface

uses
Jpeg,{GIFimage,}Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject
var Action: TCloseAction);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }

hotkeyid :integer;
procedure WMhotkeyhandle(var msg:Tmessage);
message wm_hotkey;


public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Wmhotkeyhandle
(var msg:Tmessage);
begin
if msg.LParamHi=vk_f11 then
begin
msg.Result:=1;
button1.Click;

end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
Bitmap:TBitmap;
Jpeg: TJpegImage;
Handles: HWnd;
Rect: TRect;
ScreenDC: HDC;

begin

Handles := GetForegroundWindow ( );
ScreenDC := GetWindowDC ( Handles );

Bitmap := TBitmap.Create;

GetWindowRect ( Handles, Rect );
Bitmap.Width := Rect.Right - Rect.Left;
Bitmap.Height := Rect.Bottom - Rect.Top;
BitBlt(Bitmap.Canvas.Handle,0,0,Bitmap.Width ,Bitmap.Height,ScreenDC,0,0,SRCCOPY );
ReleaseDC ( Handles, ScreenDC );


Jpeg:= TJpegImage.Create;
Jpeg.Assign(Bitmap);
Jpeg.SaveToFile(ExtractFIlePath(Application.ExeName)+'jpeg.jpg');
jpeg.free;
Bitmap.SaveToFile(ExtractFIlePath(Application.ExeName)+'bmp.bmp');
Bitmap.Free;


//end;
showmessage('捕捉屏幕得到的图象文件被保存在如下目录下'#13+ExtractFIlePath(Application.ExeName));


end;

procedure TForm1.FormCreate(Sender: TObject);
begin
HotKeyId := GlobalAddAtom('MyHotKey') - $C000;


registerhotkey(handle,hotkeyid,0, vk_f11)
//这里注册

end;

procedure TForm1.FormClose(Sender: TObject
var Action: TCloseAction);
begin
unregisterhotkey(handle,hotkeyid);
DeleteAtom(HotKeyID);

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

//

end;

end.

//试试看吧,我这能捕捉,按F11键捕捉。
 
看这里,最简单的方法:
Bitmap.Width:=ShockwaveFlash.Width;
Bitmap.Height:=ShockwaveFlash.Height;
ShockwaveFlash.PaintTo(Bitmap.Canvas.Handle,0,0);
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
顶部