📄 bitmapcontainer.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 + -