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]