当前位置:编程学习 > wap >>

帮我看看有关图片的操作。

美工做了一个字符列表,每一个字符所占的矩形长17 高 16,美工做的这个字符列图片大小是374*16 也就是一个横条图片。上面有22个字,现在我需要做的就是从这个图片中读取出每一个字,同样还有一个大小相同的MASK图片,我也要得到每一个mask字。
现在问题是,我可以正常取得第一个字,而从第二个字开始,我发现都显示不出来,我不知道问题出在哪里,希望有这方面经验的朋友指点一下。下面是我取每一个字的过程


CFbsBitmap* pbitmap = NULL;
CFbsBitmap* pbitmapMask = NULL;

CFbsBitGc*  pbitmapGc;
CFbsBitmapDevice* ibitmapDevice;

CFbsBitGc*  pbitmapMaskGc;
CFbsBitmapDevice* ibitmapMaskDevice;

pbitmap = new (ELeave) CFbsBitmap;
pbitmapMask = new(ELeave) CFbsBitmap;

User::LeaveIfError(pbitmap->Create(TSize(17, 16), EColor16M));
User::LeaveIfError(pbitmapMask->Create(TSize(17, 16), EColor16M));

ibitmapDevice = CFbsBitmapDevice::NewL(pbitmap);
User::LeaveIfError(ibitmapDevice->CreateContext(pbitmapGc));

ibitmapMaskDevice = CFbsBitmapDevice::NewL(pbitmapMask);
User::LeaveIfError(ibitmapMaskDevice->CreateContext(pbitmapMaskGc));

        //取第一个字
rect.SetRect(0, 0, 17, 16);
        //取第二个字
         //rect.SetRect(17, 0, 17, 16);
        //取第三个字
         //rect.SetRect(34, 0, 17, 16);
pbitmapGc->BitBlt(TPoint(0,0), iWordListBmp, rect);
pbitmapMaskGc->BitBlt(TPoint(0,0), iWordListMaskBmp, rect);

rect.SetRect(0, 0, 17, 16);
        //显示这个字
gc.BitBltMasked(point, pbitmap, rect, pbitmapMask, ETrue); --------------------编程问答-------------------- 第二个字rect难道不是(17,0,34,16)? --------------------编程问答-------------------- gc.BitBltMasked(point, pbitmap, rect, pbitmapMask, ETrue);
你注意检查一下第二个图片以后point和rect的值能不能对应上 --------------------编程问答-------------------- pbitmap->Create(TSize(17, 16), EColor16M)只能对应一张位图,让美工把374*16 也就是一个横条图片切成n个17*16小图,然后再循环读取。 --------------------编程问答-------------------- 谢谢上面的各位,问题没有解决,我尝试了很多办法,我找了另一个图也还是同样的问题。现在我让美工直接做成单独的而非一个整块。
--------------------编程问答-------------------- 呵呵,楼主应该是犯了个小毛病了,你的Rect的设置应该是有问题的
//rect.SetRect(17, 0, 17, 16); 你所想的这块区域应该为:rect.SetRect(TPoint(17, 0),TSize( 17, 16 )); 
再试下吧

--------------------编程问答-------------------- 好,听你的,我试下
补充:移动开发 ,  Symbian
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,