mobile下使用png图片的三种方法
来源:互联网 发布:java ioc 作用 编辑:程序博客网 时间:2024/05/22 10:22
N久没有写过博客了,主要是人太懒,有时间就玩游戏了……
不过这次下决心,一周写一次,一是记录一周的生活变化及技术的进步。
工作三个月了,到公司之后主要做Mobile方面的开发,因为以前自学过Windows程序设计,虽然水平很次,但大概有个思想了,所以上手也比较快。
这周主要是做那个Mobile上的桌面插件呢,类似于QuickClock的插件,但因水平太次,光搞png图片就搞了两天,到现在还没完全弄清楚。
Mobile上使用png图片的方法也不算少,但周一的时候就知道有个libpng库,然后找例子来看怎么用,想自己通过libpng库来实现将png图片的载入。
Libpng是一个开源的png解码库,也有相应的mobile版本。要想载入使用,它里面的两个非常重要的结构一定要知道,一是png_structp,再一个就是png_infop
Png_structp是图片结构指针吧,png_infop是信息指针,在png.h里面有它们的详细定义。使用png_create_read_struct函数,执行成功后就会返回png_structp结构指针,里面也包含了图片的各种信息。然后就可以设置png_ptr->io_ptr,将png图片的文件指针赋给它,具体是怎么回事我也不清楚,呵呵。接着调用png_read_png来解码,这种方法是一次性将整个图片进行解码。不过也可以一行一行的解,有png_read_row等函数。
最后读出来的数据还要通过转换才能使用,因为我也是迷迷乎乎的看了一下,所以也没有深入,现在也只知道一个大概。
不过如果想简单的使用png图片,比如说,这时候你只有png图片,但又不想使用它的透明色之类的,直接用SHLoadImageFile,这个函数很好用。这个可能是mobile下专有的吧,不知道pc上面能不能用。
还有一个方法就是使用Iimage接口。这个方法很好用,但因为它要往目标dc上画的时候,每次画,每次解码,所以你要做动画的话,可能速度会根不上。
因为使用也很简单,大概贴一下它的代码就行了:
- IImagingFactory *pImgFactory = NULL;
- IImage *pImage = NULL;
- HDC hdc = GetWindowDC(hWnd);
- CoInitializeEx(NULL, COINIT_MULTITHREADED);
- // Create the imaging factory.
- if (SUCCEEDED(CoCreateInstance (CLSID_ImagingFactory,
- NULL,
- CLSCTX_INPROC_SERVER,
- IID_IImagingFactory,
- (void **)&pImgFactory)))
- {
- // Load the image from the JPG file.
- if (SUCCEEDED(pImgFactory->CreateImageFromFile(
- TEXT("//image.png"),
- &pImage)))
- {
- //将图片数据写入到g_hBkDC中
- RECT rcBmp = {0, 0, Width, Height};
- pImage->Draw(hdc, &rcBmp, NULL);
- pImage->Release();
- }
- pImgFactory->Release();
- }
- CoUninitialize();
本来还想在这周看看tapi呢,一晃就到周五了,唉,只能到下周了……
(我是菜鸟一个,上面可能有很多错误,希望大家能够提出批评指正,貌视上面还有好多笔误,再编辑一下……)
- mobile下使用png图片的三种方法
- Windows Mobile下画透明PNG图片的解决方案
- Windows Mobile下画透明PNG图片的解决方案
- Windows Mobile下画透明PNG图片的解决方案
- Windows Mobile下画透明PNG图片的解决方案----把PNG转成BMP再画
- IE使用png透明图片的方法
- win mobile 5显示jpg,png,gif图片的方法--5mbox的图片库封装
- windows mobile下资源中添加PNG图片
- IE6 使用png透明图片的方法 [非JS方法]
- IE6下PNG图片背景透明的处理方法
- 解决IE6下Png图片透明的最佳方法
- VC下加载JPG/GIF/PNG图片的方法
- 解决IE6下png图片的背景透明方法
- 在IE6下让PNG图片透明的方法
- android是根据什么去选择drawable文件夹下的三种图片(png,jpg,gif)?图片导入
- android使用assets文件下的.9.png格式图片
- win32下gdiplus的使用/实现PNG图片透明窗体
- 使用assets文件下的.9.png格式图片
- 70,000的标准商场条码库
- Ext store 过滤数据技巧
- JAVA链接ACCESS数据库
- 通过UTF8转化简体中文和繁体中文 错?对?
- 如何知道自己是不是中木马
- mobile下使用png图片的三种方法
- jsp中jsp:forward 与 redirect区别
- 求当前周几
- 创业者失败的9大原因
- 只有十句话,我却看了十分钟
- 冷幽默
- 用VB无窗口透明Usercontrol编写透明浮动按钮
- 数据库系统查询优化的步骤
- 制作cab文件