如何保存屏幕区域到图片呢?

Juncof 2010-06-24 11:01:45
CFbsBitmap* iBitmap = new(ELeave) CFbsBitmap();
TRect rect(TPoint(0,0), TSize(iWeatherLtx, iWeatherPngLty);
CWsScreenDevice* screen = CCoeEnv::Static()-> ScreenDevice();
User::LeaveIfError(iBitmap->Create(rect.Size(), screen-> DisplayMode()));
screen->CopyScreenToBitmap(iBitmap, rect);
_LIT(KWeatherCity, "c:\\weather_1.png");
iBitmap->Save(KWeatherCity);
delete iBitmap;

保存之后图片使用mspaint打开说是不支持的文件格式。
...全文
529 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanxiao_0210 2012-09-14
  • 打赏
  • 举报
回复
标记一下,虽然以后基本用不到了
a14776584 2010-06-24
  • 打赏
  • 举报
回复
CFbsBitmap的Save的数据格式并不是按照标准的图片格式存储的
估计就是将内存中的2进制数据一流的方式写成文件
a14776584 2010-06-24
  • 打赏
  • 举报
回复
谢谢分享
Juncof 2010-06-24
  • 打赏
  • 举报
回复
谢谢,已解决
Juncof 2010-06-24
  • 打赏
  • 举报
回复
Code for screen capture TSize screenSize = CEikonEnv::Static()->ScreenDevice()->SizeInPixels();TDisplayMode displayMode = CEikonEnv::Static()->ScreenDevice()->DisplayMode(); CFbsBitmap*iBitmap = new (ELeave) CFbsBitmap(); User::LeaveIfError(iBitmap->Create(screenSize, displayMode)); TInt err = CEikonEnv::Static()->ScreenDevice()->CopyScreenToBitmap(iBitmap);iBitmap->Save(_L("c:\\system\\apps\\screen.mbm")); // here u can say // captured image as MBM
To convert it to .jpg TFileName filename;filename.Copy(_L("c:\\system\\apps\\1.jpg")); CImageEncoder* iencoder = CImageEncoder::FileNewL( CEikonEnv::Static()->FsSession(), filename,_L8("image/jpeg"), CImageEncoder::EOptionAlwaysThread); CleanupStack::PushL(iencoder);TRequestStatus aStatus = KErrNone; iencoder->Convert( &aStatus, *iBitmap );User::WaitForRequest( aStatus );CleanupStack::PopAndDestroy();
a14776584 2010-06-24
  • 打赏
  • 举报
回复
请参考CMdaImageBitmapToFileUtility
Juncof 2010-06-24
  • 打赏
  • 举报
回复
我要解决方法,直接拿去用,没有时间搞。

3,119

社区成员

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

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