使用FLASH控件实现SWF2JPG

关键代码如下

 CRect rect;
 m_flash.GetWindowRect(&rect);
 rect.SetRect(rect.left,rect.top,rect.left+m_nWidth,rect.top+m_nHeight);
 ScreenToClient(&rect);
 m_flash.MoveWindow(&rect,TRUE);

 SetDlgItemText(IDC_PAUSE,"暂停");
 m_nCurrent=0; 
 if(!LoadIndex())
 {
  MessageBox("读取索引文件失败");
  return;
 }
 StartMovie();
 SetTimer(1,1000,NULL);

void CSwf2jpgDlg::OnTimer(UINT nIDEvent)
{
 // TODO: Add your message handler code here and/or call default
 KillTimer(1);
 Capture2File();
 if(StartMovie())
  SetTimer(1,1000,NULL);
 
 CDialog::OnTimer(nIDEvent);
}

 

void CSwf2jpgDlg::Capture2File()
{
 if(pFlashDC)
  m_flash.ReleaseDC(pFlashDC);

 pFlashDC=m_flash.GetDC();

 Save2Jpg(m_strFileName,pFlashDC,m_nWidth,m_nHeight);

 m_flash.ReleaseDC(pFlashDC);
}

BOOL CSwf2jpgDlg::StartMovie()
{
 if(m_strList.IsEmpty())
  return FALSE;
 m_strFileName=m_strList.RemoveHead();
 m_strFileName=m_strFileName.Left(m_strFileName.GetLength() -1);

 m_flash.SetMovie(m_strFileName);
 m_flash.Play();
 m_flash.SetLoop(TRUE);
 m_flash.SetBackgroundColor(1);

// m_flash.GotoFrame(min(m_nFrame,m_flash.GetTotalFrames()));

// m_flash.GotoFrame(min(m_nFrame,m_flash.GetTotalFrames()));
 m_flash.GotoFrame(m_flash.GetTotalFrames() /2);
// m_flash.Rewind();
 m_flash.Stop();

 CString str;
 str.Format("%d",++m_nCurrent);

 SetDlgItemText(IDC_FILE,m_strFileName);
 SetDlgItemText(IDC_FINISH,str);
 return TRUE;
}

PS:flash控件的SetLoop(TRUE)是必须的,否刚对于有程序帧的flash控件将会造成截图失败。

程序运行中会出现有的flash文件截图失败后,其后跟着的DC获取图像将会都失败、

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值