从MEDIAPLAYER播的视频文件里抓取图片(100分)

  • 主题发起人 主题发起人 wyn990729
  • 开始时间 开始时间
W

wyn990729

Unregistered / Unconfirmed
GUEST, unregistred user!
从MEDIAPLAYER播的视频文件里抓取图片,我用以下代码:
myBmp := TBitMap.Create ;
//创建位图对象
MyCanvas := TCanvas.Create ;
//创建画布对象
rect := mdPlayer.DisplayRect ;

//取边界
Dc := GetDc(Panel1.Handle);
//取得Panel1的设备环境
myCanvas.Handle := dc;
//赋给画布对象
myBmp.Width := rect.Right - rect.Left ;
myBmp.Height := rect.Bottom - rect.Top ;
//设定位图大小
myBmp.Canvas.CopyRect(rect,myCanvas,Rect);


Image1.Canvas.Draw(0,0,myBmp);

Image1.Show;
ReleaseDC(0 ,dc);
myBmp.Free;
myCanvas.Free;
mdplayer.Resume;
但是抓到的IMAGE1是黑屏,这是什么原因?
 
rect := Panel1.ClientRect;
 
还是一样的总是黑色
 
MEDIAPLAYER播的视频文件用键盘的拷屏键也是一样黑,你先用录屏幕的软件试一试,是不是也一样黑。
 
to 怡.梦:也是黑的.
但是我把图象移到屏幕外再移回屏幕就可以抓到了.
不知道为什么现在我每次抓图都把显示用PANEL1.LEFT :=-400;然后再LEFT :=0;之后就可以抓到了但是这样一来.PANEL1的屏幕有闪烁
 
收藏................
 
procedure TForm1.Button1Click(Sender: TObject);
begin
MediaPlayer2.FileName := '文件名';
MediaPlayer2.Open;
MediaPlayer1.FileName := '文件名';
MediaPlayer1.Display := Self;
Mediaplayer1.Open;
Mediaplayer1.Play;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
Bitmap: TBitmap;
begin
Bitmap := TBitmap.Create;
Bitmap.Height := MediaPlayer1.DisplayRect.Bottom;
Bitmap.Width := MediaPlayer1.DisplayRect.Right;
Bitmap.Canvas.CopyRect(MediaPlayer1.DisplayRect, Canvas, MediaPlayer1.DisplayRect);
Bitmap.SaveToFile('文件名');
Bitmap.Free;
end;
 
to e-,

我照你的方法做了,可还是一样的问题.
我直接抓到的还是黑色,但把窗体移到屏幕外再移回来就可以抓到了???
 
后退
顶部