symbian s60一个数据缓冲效果的代码

.cpp文件部分关键代码

void CNewPlayImage::InitializeControlsL()
 {
 //定义路径
 TFileName fileName(KMbmFileName);
 iBmpFileName = fileName;
 User::LeaveIfError(CompleteWithAppPath(iBmpFileName));
 
 //new bmp*实例化
 iLoadBmp1 = new(ELeave) CFbsBitmap(); 
 iLoadBmp2 = new(ELeave) CFbsBitmap();
 iLoadBmp3 = new(ELeave) CFbsBitmap();
 iLoadBmp4 = new(ELeave) CFbsBitmap();
 iLoadBmp5 = new(ELeave) CFbsBitmap();
 iLoadBmp6 = new(ELeave) CFbsBitmap();
 iLoadBmp7 = new(ELeave) CFbsBitmap();
 ifakeBmp = new (ELeave) CFbsBitmap();
// ifakeBmp1 = new (ELeave) CFbsBitmap();
 iLoadBmpDate=new(ELeave) CFbsBitmap();

 //加载图片
 User::LeaveIfError(iLoadBmp1->Load(iBmpFileName, EMbmDdplayerProgress1));
 User::LeaveIfError(iLoadBmp2->Load(iBmpFileName, EMbmDdplayerProgress2));
 User::LeaveIfError(iLoadBmp3->Load(iBmpFileName, EMbmDdplayerProgress3));
 User::LeaveIfError(iLoadBmp4->Load(iBmpFileName, EMbmDdplayerProgress4));
 User::LeaveIfError(iLoadBmp5->Load(iBmpFileName, EMbmDdplayerProgress5));
 User::LeaveIfError(iLoadBmp6->Load(iBmpFileName, EMbmDdplayerProgress6));
 User::LeaveIfError(iLoadBmp7->Load(iBmpFileName, EMbmDdplayerProgress7));
 
 User::LeaveIfError(iLoadBmpDate->Load(iBmpFileName, EMbmDdplayerDataread));
 User::LeaveIfError(ifakeBmp->Load(iBmpFileName, EMbmDdplayerFakewin));
 //User::LeaveIfError(ifakeBmp1->Load(iBmpFileName, EMbmDdplayerFakewin1));

 fbsBmp=new(ELeave) CFbsBitmap();//初始化离屏
 fbsBmp->Create(iControlRect.Size(), EColor64K);

 //创建画笔
 fbsDevice=CFbsBitmapDevice::NewL(fbsBmp);//初始化绘图设备、绘图上下文
 fbsDevice->CreateContext(fbsGc);
 
 iCurrentBitmap = iLoadBmp1;//初始化图片指针
 
 //启动定时器
 iCMyTimer = CMyTimer::NewL(this);
 iCMyTimer->StartL(300 * 1000);
 }

/*****内存中画图******/
void CNewPlayImage::LodBmpFunction()
 {
 TRect rect;//获取整个窗体的大小
 
 //分辨率适配
 CWsScreenDevice* ws = CEikonEnv::Static()->ScreenDevice();
 TSize screenSize = ws->SizeInPixels();
// if(screenSize.iWidth==240 && screenSize.iHeight==320)
// {
 rect=Rect();
 iCurrentBitmap1=ifakeBmp;
// }
// else if(screenSize.iWidth==320 && screenSize.iHeight==240)
// {
// rect=Rect();
// iCurrentBitmap1=ifakeBmp1;
// }
 
 fbsGc->BitBlt(TPoint(0,0),iCurrentBitmap1);/**画背景图*/
 
 TRect rect2(0,90,rect.iBr.iX,rect.iBr.iY-45);
 TRgb b(0,0,0);
 b.SetAlpha(150);
 
 fbsGc->SetBrushStyle(CGraphicsContext::ESolidBrush);
 fbsGc->SetBrushColor(b);
 fbsGc->DrawRect(rect2); 
 
 TRgb c(0,0,0);
 c.SetAlpha(0);
 fbsGc->SetBrushStyle(CGraphicsContext::ESolidBrush);
 fbsGc->SetBrushColor(c);
 
 TInt width=rect2.iBr.iX/2-iCurrentBitmap->SizeInPixels().iWidth/2;//绘制的Point
 TInt height=rect2.iBr.iY/2-iCurrentBitmap->SizeInPixels().iHeight/2+32;
 TInt dateWidth=rect2.iBr.iX/2-iLoadBmpDate->SizeInPixels().iWidth/2;//字幕绘制的Point
 TInt dateHeight=height+iLoadBmpDate->SizeInPixels().iHeight+20;
 
 fbsGc->BitBltMasked(TPoint(width,height),iCurrentBitmap,rect,iCurrentBitmap,EFalse);//遮罩处理
 fbsGc->BitBltMasked(TPoint(dateWidth,dateHeight),iLoadBmpDate,rect,iLoadBmpDate,EFalse);//字幕遮罩处理
 
 DrawDeferred();
}
  
/**
 * Draw container contents.
 */    
void CNewPlayImage::Draw( const TRect& aRect ) const
 {
 
 CWindowGc& gc = SystemGc();
 gc.Clear( aRect );
 gc.BitBlt(TPoint(0,0),fbsBmp);
 
 }
    
//在回调函数里面换图
void CNewPlayImage::TimeOut()
 {
 iCMyTimer->Cancel();
 if(flag>=7)
  flag=0;
 switch(flag)//换图片
  {
  case 0:
   iCurrentBitmap = iLoadBmp1 ;
   break;
  case 1:
   iCurrentBitmap = iLoadBmp2 ;
   break;
  case 2:
   iCurrentBitmap = iLoadBmp3 ;
   break;
  case 3:
   iCurrentBitmap = iLoadBmp4 ;
   break;
  case 4:
   iCurrentBitmap = iLoadBmp5 ;
   break;
  case 5:
   iCurrentBitmap = iLoadBmp6 ;
   break;
  case 6:
   iCurrentBitmap = iLoadBmp7 ;
   break;
  default :NULL;
  }
 //刷新
 flag++;//下一张图片case 
 LodBmpFunction();
 iCMyTimer->StartL(300 * 1000);//0.2秒 循环启动定时器
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值