转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
用mediaplay实现抓图         ★★★★

用mediaplay实现抓图

作者:闵涛 文章来源:闵涛的学习笔记 点击数:823 更新时间:2009/4/23 18:38:26
关键字     

小弟前段时间曾做过保证要公开该问题的code(vc,bcb,dephi),刚开始小弟用拷屏的方法可抓下来总是黑呼呼的一片,后来在几位大虾的提示下用vc+directshow实现那该功能。

可这样一来,就必须用directshow来实现播放与初衷不合.从此我就钻进那死胡同,总是想将

directshow与activemove组件,directshow与mediaplay组件结合起来,利用IBasicVideo Interface来达到目标。可读遍那与此相关的directsdk的头文件,都没有找那结合的办法(那位大虾实现那,请指点小弟,小弟先谢那!)。一直苦无进展,市面上有关的书都翻遍那。无用!(可见那些所谓的“高级编程技巧”都是狗屁,难度大一点的问题都回避,全是乱抄,tmd骗子),有一天小弟重读The IBasicVideo interface supports the video properties of a generic video window. Generally, this is a video renderer that draws video into a window on the display. (msdn),忽然记起在读dephihelp是有一段相似

TPaintBox provides a canvas that applications can use for rendering an image.(dephihelp)遂想用paintbox可能可以,try->success,code如下:

unit Unit1;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, MPlayer, ExtCtrls, StdCtrls, Menus;

 

type

  TForm1 = class(TForm)

    MainMenu1: TMainMenu;

    filw1: TMenuItem;

    open1: TMenuItem;

    close1: TMenuItem;

    Button1: TButton;

    OpenDialog1: TOpenDialog;

    PaintBox1: TPaintBox;

    MediaPlayer1: TMediaPlayer;

    procedure FormCreate(Sender: TObject);

    procedure FormClose(Sender: TObject; var Action: TCloseAction);

    procedure PaintBox1Paint(Sender: TObject);

    procedure open1Click(Sender: TObject);

    procedure Button1Click(Sender: TObject);

  private

  imgbitmap:TBitmap;

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

procedure TForm1.FormCreate(Sender: TObject);

begin

   imgbitmap:=TBitmap.Create;

   imgbitmap.Height:=200;

   imgbitmap.Width:=200;

   imgbitmap.Canvas.Rectangle(0,0,200,200);

end;

 

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

imgbitmap.Free;

end;

 

procedure TForm1.PaintBox1Paint(Sender: TObject);

begin

PaintBox1.Canvas.CopyRect(Rect(0,0,200,200),imgbitmap.Canvas,Rect(0,0,200,200));

end;

 

procedure TForm1.open1Click(Sender: TObject);

begin

if OpenDialog1.Execute then

begin

MediaPlayer1.FileName:=OpenDialog1.FileName;

MediaPlayer1.Open;

MediaPlayer1.Display:=Form1;

MediaPlayer1.DisplayRect:=Rect(10,10,200,200);

end;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

imgbitmap.Canvas.CopyRect(Rect(0,0,200,200),form1.Canvas,Rect(10,10,200,200));

PaintBox1.Invalidate;

imgbitmap.SaveToFile(''''d:\\1234567.bmp'''');

end;

 

end.

test环境win2000+dephi6.0

至于改bcb的code相信大家一目了然,我就不改那!,vc的code要的话,我过段时间公开!

还是《程序设计实践》上说的好“尽量用简单的方法解决问题".

另外小弟这段时间在写个“网吧定时炸弹”。设计主要功能是定时炸毁网吧所有机器的硬盘(定时功能是指由使用者指定发作时间)

所谓炸毁学的是泽民炸弹的做法,不过win9x,win2000,winxp都发作罢了。计划鬼门开的那天公开code,请到时候关注.

流浪的小狗没有一个家呀,没有一个家!

   


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台