• 主页
  • Windows SDK/API
  • 基础类
  • ActiveX
  • 数据库及相关技术
  • 网络及通讯开发
  • VCL组件使用和开发

图片的保存

fidt982 2004-12-27 03:44:05
在软件中需要根据值动态加载电脑上的一些图片,以前是直接放在一个文件夹里面,用户直接能够看得见,我想通过什么方法让用户看不见这些图片,

...全文
116 点赞 收藏 13
写回复
13 条回复
slwang2003 2005年04月11日
关注
回复 点赞
fidt982 2004年12月28日
to FreeFice(庄鱼) ( )
能不能给个简单的例子啊,,新手,不会,
回复 点赞
庄鱼 2004年12月28日
建立一个格式文档,将图形文件连同格式以流的方式存放在里面,需要的时候再以流的方式读出来即可。
回复 点赞
fidt982 2004年12月28日
给分了
回复 点赞
庄鱼 2004年12月28日
忘了说明一下,采用格式文档的方式不适合设计时使用,这能用于动态的图形处理技术。你可以一开始先用个图片进行定位和属性、方法的调整,如果你还需要调整大小透明等其它属性,可以在struct Buf里增加相应的字段即可。type是用于case语句处理的,因为JPEG等图像要进行转换成Bmp以后才能使用,因此,刚开始,你如果对图形格式不是很了解的话,不妨都用Bmp文件,或单一格式图形文件,这样会比较简单些。
回复 点赞
Maconel 2004年12月28日
1、同意资源法,上网一搜大把。
2、将图片放入一个文件夹,然后文件夹命名为“不要打开此文件夹,否则电脑将爆炸!!!”
回复 点赞
庄鱼 2004年12月28日
完整的例子贴上来还比较困难,先给个思路吧:
struct Buf{
int id;
int len;
int type;
unsigned char *buf;};
struct ImageFile{
int num;
Buf *img;};
bool GetImage(AnsiString filename,ImageFile* img)
{
TFileStream *in = new TFileStream(filename,fmOpenRead);
int n;
in->Read(&n,sizeof(n));
img->img = new Buf[n];
img->num = n;
for(int i=0;i<n;i++){
in->Read(&(img->img[i].len),sizeof(int));
img->img[i].id = i;
in->Read(&(img->img[i].type),sizeof(int));
img->img[i].buf = new unsigned char[img->img[i].len];
in->Read(img->img[i].buf,img->img[i].len);
}
delete in;
return true;
}
使用时,将img.img[i].buf作为流串赋值给TImage->Picture->Bitmap->LoadFromStream函数即可。id是作索引字用的,这样可以用链表的方式查询,当然,这里可以直接用数组的下标进行操作。具体的实现要比这复杂一些,但大致的原理是一样的。如果觉得用缓冲的方式资源消耗比较大,可以仅读取指定存储区的数据,然后再显示。
回复 点赞
fidt982 2004年12月27日
TO 0constantine(飘遥的安吉儿) 什么资源法怎么用
回复 点赞
我来看看CB 2004年12月27日
TImageList控件或者资源文件,不过这样程序要很大。
要不就把图片压缩在一起,自己从里面取。
回复 点赞
constantine 2004年12月27日
提醒:用资源法,把图片都编译到exe
回复 点赞
fidt982 2004年12月27日
TO chiengod(钱神爷) 我的图片比较多,,放在IMAGE里不好弄吧,还有没有其它的方法,
回复 点赞
Amour81 2004年12月27日
IMAGELIST中
回复 点赞
chiengod 2004年12月27日
放在image中,然后visible=false;用的话,直接调用好了
回复 点赞
发动态
发帖子
C++ Builder
创建于2007-08-02

2564

社区成员

10.2w+

社区内容

C++ Builder相关内容讨论区
社区公告
暂无公告