MFC批量读取图片并显示
1、首先在图片的文件夹下生成图片的路径(可以是相对路径和绝对路径:其中,相对路径是指图片相对打开的txt的路径)
2、定义一个CStdioFile类的对象例如:CStdioFile ImPath,(详细了解,可按F1可知道其成员函数等),然后,用IMPath.Open(“(txt文件位置)”,CFile::modeRead);其中,CStdioFile是继承CFile的类。
当成功打开,Open函数返回非0,否则为0,因此可以根据返回值是否为0来判断是否打开文件。
3、从txt文件中循环读每一行的内容,并存在字符串中。
(1)这里需要注意的是,使用CStdioFile::ReadString函数读取每一行的数据,并将每一行的数据存到字符串中,(要先定义多个字符串,例如:CString ImPathName[40000];)
对于CStdioFile::ReadString,有两种类型:
virtual LPTSTR ReadString(
LPTSTR lpsz,
UINT nMax
);
virtual BOOL ReadString(
CString& rString
);
参数解释:
lpsz
Specifies a pointer to a user-supplied buffer that will receive a null-terminated text string.
nMax
Specifies the maximum number of characters to read, not counting the terminating null character.
rString
A reference to a CString object that will contain the string when the function returns.
// 第一种方式是限制最多读的字符个数
// 第二种方式可以读取整个txt文件的内容,并且每一行的数据读完之后,如果使用循环的话,将会继续读取下一行文件,直到读完最后一行,使用ImPathName[imn].GetLength() < 2(2根据情况而定)判断是否读完文件,这里我们需要进一步了解GetLength()函数.
(2)GetLength()函数:获得当前字节文件的逻辑长度,而不是数量。
返回值:该文件的长度,返回字符串中的字节计数。
说明:这个成员函数用来获取这个CString对象中的字节计数;这个计数不包括结尾的空字符。对于多字节字符集,GetLength()按每一个8位字符计数,即:在一个多字节符中的开始和结尾字节被算作2个字节。简单说一下,中文等非英语系的大部分语言,存在无法使用有限的acsii字符表达的问题,属于多字节,英文字符属于单字节。
对于批量读取文件,我们采用第二种方式:例如
for (;;)
{
ImPath.ReadString(ImPathName[imn]);
if (ImPathName[imn].GetLength() < 2)
{
break;
}
imn++;
}
4、循环载入图片。