請問如何一邊撥放一邊把avi的frame存成TBitmap |
答題得分者是:taishyang
|
bowenc
一般會員 發表:10 回覆:12 積分:4 註冊:2003-03-06 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
bowenc您好:
引言:請問如何一邊撥放一邊把avi的frame存成TBitmap您可以參考下面連結 http://netcity1.web.hinet.net/userdata/nep2314/ 其中[BCB程式設計文件]或是[BCB程式設計範例下載] 當中的[如何在多媒體文件中批量抓取圖象] 順心 |
bowenc
一般會員 發表:10 回覆:12 積分:4 註冊:2003-03-06 發送簡訊給我 |
那個連結的程式我看了
他主要做轉換成bitmap是下面這段: 067: void __fastcall TForm1::MdPlayerClick(TObject *Sender, TMPBtnType Button,
068: bool &DoDefault)
069: {
070: Graphics::TBitmap *MyBmp;
071: TCanvas *MyCanvas;
072: HDC dc;
073: TRect rect;
074: String name,tmp;
075: UpdataTrackBar();
076: if(((Button = btBack)||(Button = btStep))&& Fetchf)
077: {
078: try
079: {
080: MyBmp = new Graphics::TBitmap ;
081: MyCanvas =new TCanvas ;
082: rect = MdPlayer->DisplayRect ;
083: dc = GetDC(Panel1->Handle);
084: MyCanvas->Handle = dc;
085: MyBmp->Width = rect.Right - rect.Left ;
086: MyBmp->Height = rect.Bottom - rect.Top ;
087: MyBmp->Canvas->CopyRect(rect,MyCanvas,rect);
088: Count =Count+1;
089: if(Count<10)name="000" IntToStr(Count);
090: else if(Count<100)name="00" IntToStr(Count);
091: else if(Count<1000)name="0" IntToStr(Count);
092: name = Path name ".bmp";
093: MyBmp->SaveToFile(name);
094: }
095: catch(...){}
096: ReleaseDC(0,dc);
097: delete MyBmp;
098: delete MyCanvas;
099: }
100: } 不過他if那邊的條件是要按一次Back或Step才會做一次
可是我想要按一次play就一直做到完成為止
我把他改成while(MediaPlayer1->Mode == mpPlaying)
但是執行的時候按了play不會做,要再按一次Stop才會做
不知道為什麼?? ps.我的測試方法是加一個image,然後把MyBmp顯示在上面
|
bowenc
一般會員 發表:10 回覆:12 積分:4 註冊:2003-03-06 發送簡訊給我 |
自問自答.........
我把程式改成了這個
http://galileo.spaceports.com/~bowenc/Mplayer.rar
不過還有幾個問題
因為我用do-while讓他一直做轉換的動作
所以按了play之後進入了回圈就沒辦法在按其他動作了
(會一直做到播完一遍為止)
還有我用TrackBar去改變一開始MediaPlayer->Position的位置
可是用MediaPlayer->Play()去播卻都是從頭開始?
是因為用Play()播的關係嗎? 最理想的結果是能夠自由的從某個位置開始而且可以中途終止
不知道是否有方法可以達成
請各位大大們幫忙一下
謝謝
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |