如何增加或实现一个连续显示图像(类似视频那样)的功能?

sjyuhusun 2007-10-26 09:29:33
我将symbian自带的socket程序(C:\Symbian\7.0s\Series60_v21_CW\Series60Ex\sockets)修改了下,现在能与pc互相正常发送数据,手机端(模拟器)能将pc发来的数据在那个CEikRichTextEditor里显示出来。因为pc端发来得数据是图像数据,程序里把这些数据放在了一个TBuf8里了,所以我想把收到的图像数据转化为图像显示出来(暂时不做图像变换之类),怎么增加这个功能呢或者实现它呢?

我参照了ImageConverter那个例子,那个例子是关于图像处理的(现只需其中的图像显示部分)。

是不是可以参考这两个例子呢,但是不知道怎么把他们的功能集中到一起实现。
前者是app->document->ui->view,或者是app->document->ui->container,请高手指点,谢谢
...全文
131 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sjyuhusun 2007-11-12
  • 打赏
  • 举报
回复
结贴
anel 2007-10-29
  • 打赏
  • 举报
回复
如果只有一个视图后者就可以,也可前者;如果多视图则用前者.
isarc 2007-10-29
  • 打赏
  • 举报
回复
container中有draw(),view中也有draw()的,你的意思是说:把view中的draw()去掉,都在container中的draw()中实现吗,而原来在view中实现的,比如显示iLabel值之类的,也要在container中实现?


view 里面是没有draw的。你所看到的有draw都是名字是view而从CCoeControl派生的而已。view派生于caknview。

图片转换可能会慢,显示可能会不连续。
dyw 2007-10-28
  • 打赏
  • 举报
回复
可能你说的view不是从CAknView派生的,而是CCoeControl,只是名称中有个(或概念上讲是)view,而不是类继承中的view。
看看它们的父类是否都是CCoeControl?
由于要绘图,iLabel之类的应该去掉,只使用CImageConverterContainer::Draw就OK了。
若iLabel等有特殊用途,那么绘制区域应该相应缩小。
sjyuhusun 2007-10-28
  • 打赏
  • 举报
回复
dyw:你好。
container中有draw(),view中也有draw()的,你的意思是说:把view中的draw()去掉,都在container中的draw()中实现吗,而原来在view中实现的,比如显示iLabel值之类的,也要在container中实现?

另外,为什么draw()中实现的代码都很简单

socket的view.cpp中draw():
void CSocketsAppView::Draw(const TRect& aRect) const
{ // Clear the screen
CWindowGc& gc = SystemGc();
gc.Clear(aRect);
}
ImageConverter的container.cpp中的draw():
void CImageConverterContainer::Draw(const TRect& /*aRect*/) const
{ CWindowGc& gc = SystemGc();
gc.Clear(); // not that efficient, but enough for this
if( iBitmap )
{
gc.BitBlt( TPoint(0,0), iBitmap );
}
}
dyw 2007-10-26
  • 打赏
  • 举报
回复
建议用前者,原因:View类可以包含Container,反过来却不能。
View类可以负责数据接收与处理,而Container负责绘制与显示图像(构造Container时将View类的引用传递过去,即可在Container中访问View的数据)。

3,119

社区成员

发帖
与我相关
我的任务
社区描述
塞班系统(Symbian系统)是塞班公司为手机而设计的操作系统,它的前身是英国宝意昂公司的 EP ( Electronic Piece of cheese)操作系统。
社区管理员
  • Symbian社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧