I am trying to create a custom drawn bitmap and trying to draw it on screen . All I can see is a different bitmap (actually the bitmap currently selected before )drawn on screen . Is there any solution ? I just want to write into a bitmap first that is not a part of screen and then make it drawn on screen.
My codes are as follows
and called fromCode:#include "Drawer.h" #include <AknExGrid.mbg> /* * Concepts: * !Drawing on top of Phone screen! */ // ================= MEMBER FUNCTIONS ======================= TInt CDrawer::Period(TAny* aObject) { ((CDrawer*)aObject)->Ticker(); return 1; // if(inum==1) // iAppUi->TransferControlfromTicker(); } void CDrawer::ConstructL(const TRect& aRect,TInt aNum,TRgb aTickBackCl, TRgb aTickFontCl ,TInt aInterval) { ..... iRootScreenDevice->GetDefaultScreenSizeAndRotation(SizeAndRotation); //WindowGroup iRootWindowGroup=RWindowGroup(iWsSession); User::LeaveIfError(iRootWindowGroup.Construct((TUint32)&iRootWindowGroup, EFalse)); iRootWindowGroup.SetOrdinalPosition(0,ECoeWinPriorityAlwaysAtFront); iRootWindowGroup.EnableReceiptOfFocus(EFalse); .... iPeriodic = CPeriodic::NewL(CActive::EPriorityHigh); TTimeIntervalMicroSeconds32 Start=500; TTimeIntervalMicroSeconds32 Interval=aInterval*10000; iPeriodic->Start(Start,Interval,TCallBack(Period, this)); ..... ////////////capture key iRootWindow.Activate(); iDrawer = CFbsBitGc::NewL(); iBseDevice = CFbsBitmapDevice::NewL(iAppUi->iImageConvertor->Bitmap(46)); iNseDevice = CFbsBitmapDevice::NewL(iAppUi->iImageConvertor->Bitmap(45)); } void CDrawer::DoCancel() { if(iPeriodic->IsActive()) {iPeriodic->Cancel(); delete iPeriodic; } } void CDrawer::Ticker() { .... } // Destructor CDrawer::~CDrawer() { .... } /. // --------------------------------------------------------- // CDrawer::Draw(const TRect& aRect) const // --------------------------------------------------------- // void CDrawer::Draw() { Writer.Set(_L("")); // TFontSpec MyeFontSpec (_L("SwissA"),170); // User::LeaveIfError(iRootScreenDevice->GetNearestFontInTwips(iAppUi->iTickerFont,MyeFontSpec)); iWindowGc->Activate(iRootWindow); iWindowGc->UseFont( iCoeEnv->NormalFont() ); if(iAppUi->iTickerMode!=CAknExGridAppUi::KFGTShowWait&& iAppUi->iTickerMode!=CAknExGridAppUi::KFGTShowForm) { if(iAppUi->iTickerMode==CAknExGridAppUi::KFGTShowNone) { iRootWindow.Invalidate(TRect()); iRootWindow.BeginRedraw(TRect()); } else { iRootWindow.Invalidate(iDrwRect); iRootWindow.BeginRedraw(iDrwRect); } if(inum==0) { iWindowGc->DrawBitmap(TPoint(ixt,0),iAppUi->iImageConvertor->Bitmap(46)); iWindowGc->DrawBitmap(TPoint(ixt1,0),iAppUi->iImageConvertor->Bitmap(46)); } else { iWindowGc->DrawBitmap(TPoint(ixt,16),iAppUi->iImageConvertor->Bitmap(45)); iWindowGc->DrawBitmap(TPoint(ixt1,16),iAppUi->iImageConvertor->Bitmap(45)); } } else { ..... } else { if(iAppUi->iTickerMode==CAknExGridAppUi::KFGTShowForm&&idrawheader) {.... } } } iRootWindow.EndRedraw(); iWindowGc->Deactivate(); iWsSession.Flush(); // iRootScreenDevice->ReleaseFont(iAppUi->iTickerFont); } void CDrawer::CreateTicker(TInt aTicker,TInt aTSize,TRgb aBgColor,TRgb aFgColor) { switch(aTicker) {case CAknExGridAppUi::KTickerBSE: iBseDevice->CreateContext( iDrawer ); iDrawer->Activate(iBseDevice); break; case CAknExGridAppUi::KTickerNSE: iNseDevice->CreateContext( iDrawer ); iDrawer->Activate(iNseDevice); break; } switch(aTSize) {case CAknExGridAppUi::KTickerSmall: iTime=2; break; case CAknExGridAppUi::KTickerBig: iTime=1; break; } iDrawer->SetBrushColor(aBgColor); iDrawer->SetPenStyle(CGraphicsContext::ENullPen); iDrawer->SetBrushStyle(CGraphicsContext::ESolidBrush); iDrawer->Clear(); // iDrawer->DrawRect(iTickerRect); iDrawer->SetPenStyle(CGraphicsContext::ESolidPen); iDrawer->SetBrushStyle(CGraphicsContext::ENullBrush); iDrawer->UseFont(CEikonEnv::Static()->NormalFont()/*iAppUi->iTickerFont*/); xOffset=0; for(TInt t=0;t<iTime;t++) { iDrawer->SetPenColor(aFgColor); iAppUi->iPtr16.Set(iAppUi->ScreenArray()->operator [](aTicker*3)); if(iAppUi->iPtr16.Length()>0) /* 1) Last Updated on 11:36 AM*/ iDrawer->DrawText(iAppUi->iPtr16.AllocL()->Des(),TPoint(ixt+xOffset,12)); /*0*/ xOffset=xOffset+iAppUi->iTickerFont->TextWidthInPixels(iAppUi->iPtr16.AllocL()->Des())+iAppUi->iTickerFont->TextWidthInPixels(_L(" ")); iAppUi->iPtr16.Set(iAppUi->ScreenArray()->operator [](aTicker*3+1)); if(iAppUi->iPtr16.Length()>0) /* 2) *** SENSEX: 15485.61 ** ( */ iDrawer->DrawText(iAppUi->iPtr16.AllocL()->Des(),TPoint(ixt+xOffset,12)); iAppUi->iwriteBuf.Copy(iAppUi->iPtr16); /*1*/ xOffset=xOffset+iAppUi->iTickerFont->TextWidthInPixels(iAppUi->iwriteBuf)+iAppUi->iTickerFont->TextWidthInPixels(_L(" ")); iAppUi->iPtr16.Set(iAppUi->ScreenArray()->operator [](aTicker*3+2)); iAppUi->iwriteBuf.Copy(iAppUi->iPtr16); iDrawer->SetPenStyle(CGraphicsContext::ENullPen); iDrawer->SetBrushStyle(CGraphicsContext::ESolidBrush); if(iAppUi->iPtr16.Length()>0) { /* Up or down icon */ if(iAppUi->iPtr16.Mid(0,1)==_L("-")) { // iimage->LoadAndCompress(iAppUi->iimgBuf,EMbmAknexgridDown_icon,ETrue); // iimage_mask->LoadAndCompress(iAppUi->iimgBuf,EMbmAknexgridDown_mask_icon,ETrue); iDrawer->SetPenColor(KRgbRed); iDrawer->BitBltMasked(TPoint(ixt+xOffset,1),iAppUi->iImageConvertor->Bitmap(25) ,TRect(0,0,iAppUi->iImageConvertor->Bitmap(25)->SizeInPixels().iWidth, iAppUi->iImageConvertor->Bitmap(25)->SizeInPixels().iHeight), iAppUi->iImageConvertor->Bitmap(26),ETrue); } else if(iAppUi->iPtr16.Mid(0,1)==_L("+")) { // iimage->LoadAndCompress(iAppUi->iimgBuf,EMbmAknexgridUp_icon,ETrue); // iimage_mask->LoadAndCompress(iAppUi->iimgBuf,EMbmAknexgridUp_mask_icon,ETrue); iDrawer->SetPenColor(KRgbGreen); iDrawer->BitBltMasked(TPoint(ixt+xOffset,1), iAppUi->iImageConvertor->Bitmap(23),TRect(0,0, iAppUi->iImageConvertor->Bitmap(23)->SizeInPixels().iWidth, iAppUi->iImageConvertor->Bitmap(23)->SizeInPixels().iHeight), iAppUi->iImageConvertor->Bitmap(24),ETrue); } // xOffset=xOffset+16; ///*2*/ xOffset=xOffset+iMyFont->TextWidthInPixels(iAppUi->iwriteBuf); iDrawer->SetPenStyle(CGraphicsContext::ESolidPen); iDrawer->SetBrushStyle(CGraphicsContext::ENullBrush); xOffset=xOffset+iAppUi->iTickerFont->TextWidthInPixels(_L(" ")); /* 4) +295.99 */ iDrawer->DrawText(iAppUi->iPtr16.AllocL()->Des(),TPoint(ixt+xOffset,12)); iAppUi->iwriteBuf.Copy(iAppUi->iPtr16.AllocL()->Des()); /*2*/ xOffset=xOffset+iAppUi->iTickerFont->TextWidthInPixels(iAppUi->iwriteBuf)+2; iDrawer->SetPenColor(aFgColor); iDrawer->DrawText(_L(")"),TPoint(ixt+xOffset,12)); xOffset=xOffset+iAppUi->iTickerFont->TextWidthInPixels(_L(" ")); } } iWsSession.Flush(); switch(aTicker) {case CAknExGridAppUi::KTickerBSE: iAppUi->iImageConvertor->Bitmap(46)->Save(_L("Bse.bmp")); break; case CAknExGridAppUi::KTickerNSE: iAppUi->iImageConvertor->Bitmap(45)->Save(_L("Nse.bmp")); break; } }
Code:void CAknExGridAppUi::FetchTicker() { _LIT(KFetchTicker,"Fetching Ticker"); iLog.Write(KFetchTicker); //////////////Set transaction observer Model().FetchTickerL(); if(iShowMode==KShowSplash) { User::LeaveIfError(iWsBackSession.Connect()); // iWindowsGroupID = CEikonEnv::Static()->RootWin().Identifier(); // CEikonEnv::Static()->WsSession().SetWindowGroupOrdinalPosition(iWindowsGroupID,0);//(identifier,position) } else iShowMode=KShowGrid; User::CompressAllHeaps(); if(iDrawer0==NULL) {iDrawer0 =new (ELeave) CDrawer(); iDrawer0->SetMopParent(this); iDrawer0->ConstructL( TRect(TPoint(0,0), TSize(ClientRect().Width(),16)) ,0 ,KRgbDarkBlue,KRgbWhite,1); } if(iDrawer1==NULL) { iDrawer1 =new (ELeave) CDrawer(); iDrawer1->SetMopParent( this ); iDrawer1->ConstructL( TRect(TPoint(0,0), TSize(ClientRect().Width(),16)) ,1,KRgbWhite, KRgbDarkBlue,1); } iDrawer0->CreateTicker(KTickerBSE,KTickerSmall,KRgbDarkBlue,KRgbWhite); iDrawer1->CreateTicker(KTickerNSE,KTickerSmall,KRgbWhite,KRgbDarkBlue); iDrawer0->MakeVisible(ETrue); iDrawer1->MakeVisible(ETrue); }


Reply With Quote
.
, wizard I can see my bitmap through my MBM wizard as you said . It is creating fine . But it is not drawing , Do I have to something like reload it ?


