图片的保存

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

...全文
149 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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;用的话,直接调用好了

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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