wince UI开发深入研究
来源:互联网 发布:七天网络如何注册账号 编辑:程序博客网 时间:2024/06/05 08:32
1:WINCE UI开发图形渲染选择
后续
2:WINCE UI 利器
xnview
3:图片打包内存解压技术
wince上图片的高效显示一直是一个问题,最近在TELECHIP系列上在研究图形如何在更高效的显示,决定放弃以前的UI架构,目前暂时准备实验的是一个打包资源然后内存读取再利用图形加速这块,目前初步实验阶段,先记录下
#include <imaging.h>
#include <initguid.h>
#include <imgguids.h>
void CpngxianshiDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
CFile file;
CFileException fe;
CString FileName ;
DWORD dwFileLength;
BYTE* pBuff;
FileName=L"\\Storage Card\\JPG_171.jpg";
if(0 == file.Open(FileName, CFile::modeRead | CFile::shareDenyWrite, &fe)) //打开文件
{
AfxMessageBox(L"打开文件失败");
return ;
}
dwFileLength = file.GetLength(); //取得文件总长度
pBuff=new BYTE[dwFileLength];
file.Seek(0 ,CFile::begin); //定位
file.Read((BYTE*)(pBuff) , dwFileLength); //读字节
file.Close();
IImagingFactory *pImgFactory = NULL;
IImage *pImage = NULL;
HRESULT hrCoInit;
HDC hdcCont=NULL,hdcMem=NULL;
ImageInfo pimageinfo;//= new sizeof(ImageInfo);
RECT rect;
//pImgFactory->CreateBitmapFromBuffer( );
//if(FAILED(pImagingFactory->CreateImageFromBuffer(byData,dwLen,BufferDisposalFlag::BufferDisposalFlagCoTaskMemFree,&pImage)))goto End;
//ImageInfo imgInfo;
//使用IImagingFactory的CreateImageFromBuffer获取IImage指针时,需要注意参数的设置,
//只有在第三个参数为BufferDisposalFlagNone时才能使用Release,不然会报内存错误。
//如果参数为BufferDisposalFlagGlobalFree,则图片内存需要使用GlobalFree来释放(GlobalFree的使用要注意)。
//if (FAILED(hrCoInit=CoInitializeEx(NULL, COINIT_MULTITHREADED)))goto End;
//if(FAILED(CoCreateInstance(CLSID_ImagingFactory,NULL,CLSCTX_INPROC_SERVER,IID_IImagingFactory,(void**) &pImagingFactory)))goto End;
hrCoInit=CoInitializeEx(NULL, COINIT_MULTITHREADED);
CoCreateInstance(CLSID_ImagingFactory,NULL,1,IID_IImagingFactory,(void**) &pImgFactory);
pImgFactory->CreateImageFromBuffer(pBuff,dwFileLength,BufferDisposalFlag::BufferDisposalFlagCoTaskMemFree,&pImage);
pImage->GetImageInfo( &pimageinfo);
rect.top =0;
rect.left =0;
rect.right =pimageinfo.Width ;
rect.bottom =pimageinfo.Height ;
pImage->Draw(dc,&rect,NULL);
pImgFactory->Release();
pImage->Release();
delete pBuff;
}
//############################
void DrawImage(HDC hdc,RECT& rc,UINT nIDResource,CString lpType)
{
HINSTANCE hInst = AfxGetResourceHandle();
HRSRC hRsrc = ::FindResource(hInst, MAKEINTRESOURCE(nIDResource), lpType);
if (!hRsrc)
return;
//资源大小
DWORD len = SizeofResource(hInst, hRsrc);
//转换图片资源为字节数组
BYTE* lpRsrc = (BYTE*)LoadResource(hInst, hRsrc);
if (!lpRsrc)
return;
IImagingFactory *pImgFactory = NULL;
IImage *pImage = NULL;
CoInitializeEx(NULL, COINIT_MULTITHREADED);
if (SUCCEEDED(CoCreateInstance (CLSID_ImagingFactory,
NULL,
CLSCTX_INPROC_SERVER,
IID_IImagingFactory,
(void **)&pImgFactory)))
{
if (SUCCEEDED(pImgFactory->CreateImageFromBuffer(lpRsrc,len,BufferDisposalFlagNone,&pImage)))
{
pImage->Draw(hdc, &rc, NULL);
pImage->Release();
}
pImgFactory->Release();
}
CoUninitialize();
//释放资源
FreeResource(hRsrc);
}
a). 关键部分为将LoadResource转换成BYTE*以及CreateImageFromBuffer方法。
- wince UI开发深入研究
- wince UI开发深入研究
- UI -- UIApplication深入研究
- wince UI 开发
- 决定将APP开发深入学习研究
- 基于Silverlight/XAML开发嵌入式系统WinCE下应用程序UI
- wince 升级文件格式研究
- wince UI 定制
- 读书笔记----深入理解WinCE
- 读书笔记----深入理解WinCE
- JAVA开发:深入研究java.lang.Class类
- 移动开发需要对底层有深入的研究吗?
- Android开发艺术探索-动画深入研究View动画
- Android Toast与Looper的深入研究,Toast是否属于修改UI界面
- iOS8开发~UI布局(三)深入理解autolayout
- iOS8开发~UI布局(三)深入理解autolayout
- iOS8开发~UI布局(三)深入理解autolayout
- iOS8开发~UI布局(三)深入理解autolayout
- 面向對象學習總結(中)
- ANDORID~支持的设备
- IIS重装后需重新注册
- AS3 中使用 URLRequest 和 URLLoader 与服务器交互
- Android 时间计时器控件 Chronometer
- wince UI开发深入研究
- 《系统程序员成长计划》学习交流(5)-extend "C"
- InfoQ:深入浅出REST
- 在远程 LDAP 目录的 Directory Assistance 文档中配置搜索过滤器
- Android OS MTK6573 SD卡驱动浅析
- 实现微软AD与Domino OA系统的互连互用
- BSP(Board Support Package)概念解析
- WdatePicker日历控件使用方法
- 设计模式之模板模式