JPEG格式转换为位图:
#include <jpeg.hpp>
bool __fastcall TForm1::JPEGToBMP(AnsiString jpegFile,AnsiString bmpFile) { //TODO: Add your source code here
TJPEGImage *jpeg = new TJPEGImage(); jpeg->LoadFromFile(jpegFile); Graphics::TBitmap *bitmap = new Graphics::TBitmap(); try { bitmap->Assign(jpeg); bitmap->SaveToFile(bmpFile); } __finally { delete jpeg; delete bitmap; } return true; } | 遗憾的是BCB不直接支持如PNG,GIF等格式与位图的转换,希望在BCB6.0以后的版本中会得到支持.如果要进行PNG,GIF格式的转换,我们可以去寻求控件,这是最简单的办法,还有一种就是自己编写图形格式转换的程序,这个比较困难.首先要知道各种图形格式的标准,然后编写格式转换的算法,这是最重要的,最后进行编码.还有一点我也想说一下,如果你足够细心的话,可能已经发现了我在实现Timer1Timer(TObject *Sender)这个函数的时候用到了一个RebuildIconCache()函数,注释说是重建系统缓存,其实是这样的当你改变了桌布的时候,可能系统来不及重新绘制桌布,这时你需要手动地按下F5来进行刷新,但我们的程序总不能去叫用户刷新吧,所以我增加了一个RebuildIconCache()函数来完成此功能,它是这样实现的。
void __fastcall TForm1::RebuildIconCache() { //TODO: Add your source code here
int IconW; IconW= GetSystemMetrics(SM_CXICON); TRegIniFile *Reg = new TRegIniFile("Control Panel\\Desktop"); try { Reg->WriteString("WindowMetrics", "Shell Icon Size", IntToStr(IconW)); SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0); } __finally { delete Reg; } }
| 这样只要你改变了桌布设置,再广播WM_SETTINGCHANGE窗口消息,系统就会进行桌布的重新绘制。
提示:如果你想自己体会一下这个程序的功能,你不必通过键盘的输入来达到目的,http://www.zccfamily.com/zqget/ 提供了这个程序的所有源代码,你可以去下载来看一下实际的效果。
|
|