智手移动中文网's Archiver

智手小石头 发表于 2006-5-9 11:02

symbian下面可以直接写屏的一个例子

不是绘硬件内存....用这种方法在刷新时候问题多多.
if(iDSA && !iDSA->IsActive()) {
        iDSA->StartL();
}
在初始化的时候构建它...

然后有两个纯虚的函数要重建.
iMyBackCanvas = new(ELeave)CFbsBitmap();
iMyBackCanvas->Create(TSize(176,208),EColor64K);
iMyBackDevice = CFbsBitmapDevice::NewL(iMyBackCanvas);
iMyBackDevice->CreateContext(iMyBackPen);
构建后备缓冲

//最简单的直接绘屏...不过不能超出屏幕范围
void CTestBoxEigine::DrawBitBlt(TInt aPosX,TInt aPosY,CFbsBitmap* aSrcImage)
{
//直接填充
TUint16* screenMemory = (TUint16*) iMyBackCanvas->DataAddress();
TUint16* imagePix     = (TUint16*) aSrcImage->DataAddress();
TInt         imageWidth   = aSrcImage->SizeInPixels().iWidth;
TInt     imageHeight  = aSrcImage->SizeInPixels().iHeight;
        screenMemory += aPosY*iScreenWidth + aPosX;
        for (TInt ay = 0;ay < imageHeight;ay++)        {
                for (TInt ax = 0;ax < imageWidth;ax++)        {
                         *screenMemory = *imagePix;
                        screenMemory++;
                        imagePix++;
                } // for ax
        screenMemory += iScreenWidth - imageWidth;
        } // for ay
}

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.