×
Namespaces

Variants
Actions

关于将控件绘制在位图上遇到的问题

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

文章
gxb030640 在 19 Nov 2009 创建
最后由 hamishwillee 在 15 Dec 2011 编辑

我实现一个场景切换动画时遇到的几个问题,在这里总结一下,希望对大家有所帮助!

这个是我在论坛上提问的帖子的地址 [1] 非常感谢Ziteng Chen的精彩解答!

以下是Ziteng Chen写的文章的地址:

如何将控件绘制到位图上 How to draw controls on bitmap

使用第三版sdk fp2 之前版本并没有SetCustomGc这个函数,所以我就使用了SetGc,然而,当控件是复合控件,有一个或多个子控件时,进行以下操作

        CWindowToBitmapMappingGc *wbgc = CWindowToBitmapMappingGc::NewL(*iScreenDevice,*gc);
       iControl->SetGc(wbgc);
       iControl->DrawNow();
       iControl->SetGc(NULL);
       ...

就会发生错误,子控件并没有被绘制到位图上,具体原因可能是子控件的gc和父控件的gc不一致。。

所以,必须为每个子控件也设置一下SetGc(wbgc)。

根据CountComponentControls和ComponentControl,我写了以下这个函数,递归设置复合控件下每个子控件的gc,在第三版测试可以使用,不会出错.


       void SetGc(CCoeControl * iControl,CWindowToBitmapMappingGc* wsgc)
       {
          iControl ->SetGc(wsgc);
          TInt count = iControl->CountComponentControls();
          if(count == 0){
             return;
          }
          for(TInt index = 0; index < count; ++index){
             SetGc(iControl->ComponentControl(index),wsgc);
          }
       }

总算实现了想要的功能,困扰了两天。。。

This page was last modified on 15 December 2011, at 09:29.
50 page views in the last 30 days.
×