⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bitmapcontainer.cpp

📁 《基于symbian os的手机开发与应用》
💻 CPP
字号:
/*
* ============================================================================
*  Name     : CBitmapContainer from BitmapContainer.h
*  Part of  : Bitmap
*  Created  : 2006-4-16 by Hewei
*  Implementation notes:
*     Initial content was generated by Series 60 AppWizard.
*  Version  :
*  Copyright: Myself
* ============================================================================
*/

// INCLUDE FILES
#include "BitmapContainer.h"
#include <aknutils.h>
#include <bitmap.mbg>
#include "bitmap.hrh"
#include "soundthread.h"

// ================= MEMBER FUNCTIONS =======================

// ---------------------------------------------------------
// CBitmapContainer::ConstructL(const TRect& aRect)
// EPOC two phased constructor
// ---------------------------------------------------------
//
void CBitmapContainer::ConstructL(const TRect& aRect)
    {
    CreateWindowL();
   // CreateBitmap();
	
    SetRect(aRect);
	LoadBitmap();
//	ithread=CSoundThread::NewL();
    iSound=CMyToneClass::NewL();
	iSound->PlayClipL();

    ActivateL();
    }

// Destructor
CBitmapContainer::~CBitmapContainer()
    {
	 delete iBitmap;
	 if(iTargetBitmap)
	 delete iTargetBitmap;
	 delete ithread;
    }

// ---------------------------------------------------------
// CBitmapContainer::SizeChanged()
// Called by framework when the view size is changed
// ---------------------------------------------------------
//
void CBitmapContainer::SizeChanged()
    {
    }

// ---------------------------------------------------------
// CBitmapContainer::CountComponentControls() const
// ---------------------------------------------------------
//
TInt CBitmapContainer::CountComponentControls() const
    {
    return 0; // return nbr of controls inside this container
    }

// ---------------------------------------------------------
// CBitmapContainer::ComponentControl(TInt aIndex) const
// ---------------------------------------------------------
//
CCoeControl* CBitmapContainer::ComponentControl(TInt /*aIndex*/) const
    {
    
           return NULL;
       
    }

// ---------------------------------------------------------
// CBitmapContainer::Draw(const TRect& aRect) const
// ---------------------------------------------------------
//
void CBitmapContainer::Draw(const TRect& aRect) const
    {
    CWindowGc& gc = SystemGc();
    gc.Clear(aRect); // clear the graphics context
	
	switch(iCommandId)
	{
	case EBitmapCmdAppBitmapRotate:
		{
			gc.Clear(aRect);
			TPoint topLeft(20, 20); // create TPoint object for top left of bitmap
	        gc.BitBlt(topLeft, iTargetBitmap);
			break;
		}
	default:
		{
		TPoint topLeft(20, 20); // create TPoint object for top left of bitmap
	    gc.BitBlt(topLeft, iBitmap);
		break;
		}
	}

	}

// ---------------------------------------------------------
// CBitmapContainer::HandleControlEventL(
//     CCoeControl* aControl,TCoeEvent aEventType)
// ---------------------------------------------------------
//
void CBitmapContainer::HandleControlEventL(
    CCoeControl* /*aControl*/,TCoeEvent /*aEventType*/)
    {
    // TODO: Add your control event handler code here
    }
void CBitmapContainer::CreateBitmap()
{
//	iTargetBitmap=new(ELeave)CFbsBitmap();
//	User::LeaveIfError(iTargetBitmap->Create(TSize(128,128),EColor256));
	//CleanupStack::PushL(iBitmap);
}
void CBitmapContainer::LoadBitmap()
{
	iBitmap=new(ELeave)CFbsBitmap();
	_LIT(KMBMFILE,"\\system\\apps\\bitmap\\bitmap.mbm");
	TFileName file(KMBMFILE);
	User::LeaveIfError (CompleteWithAppPath (file));
	User::LeaveIfError(iBitmap->Load(file,EMbmBitmapGirl));
}
void  CBitmapContainer::RotateBitmap()
{
	iTargetBitmap=new(ELeave)CFbsBitmap();//创建Bitmap对象
	TSize TargetSize=iBitmap->SizeInPixels();//获取源位图的大小
	User::LeaveIfError(iTargetBitmap->Create(TSize(TargetSize.iHeight,TargetSize.iWidth),
		                                     iBitmap->DisplayMode()));//创建目标位图,注意位图的宽度
	                                                                  //和高度交换

    TBitmapUtil srcBitmapUtil(iBitmap);//为源位图创建位图实用类
    TBitmapUtil targetBitmapUtil(iTargetBitmap);//为目标位图创建位图实用类

	srcBitmapUtil.Begin(TPoint(20,20));//Begin..End锁定位图服务器的堆
	targetBitmapUtil.Begin(TPoint(20,20),srcBitmapUtil);
	//rotate:
	TInt xPos;
	for(TInt yPos=0;yPos<TargetSize.iHeight;yPos++)
	{
		srcBitmapUtil.SetPos(TPoint(0,yPos));
	  targetBitmapUtil.SetPos(TPoint(yPos,0));
	  for(xPos=0;xPos<TargetSize.iWidth;xPos++)
	  {
		  targetBitmapUtil.SetPixel(srcBitmapUtil);
		  srcBitmapUtil.IncXPos();
          targetBitmapUtil.IncYPos();
	  }
    }
	 
     srcBitmapUtil.End();
     targetBitmapUtil.End();
	 iBitmap->Duplicate(iTargetBitmap->Handle());


}
void CBitmapContainer::Rotate()
{

     RotateBitmap();
	 DrawDeferred();
	
}
void CBitmapContainer::SetCommandID(TInt aCommandId)
{
	iCommandId=aCommandId;
}


// End of File  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -