首页 新闻 会员 周边

用WPF做一个Xps阅读器

0
悬赏园豆:60 [已关闭问题] 关闭于 2012-07-11 10:34
求教!用WPF做一个Xps阅读器 如果要的打开的电子书有上千页甚至几千页 在用阅读器打开的时候一下就加载完还是怎么处理的? 如果是分多次加载的话,该怎么处理呢?
wpf
问题补充:

博客园,给力点啊!!!!!!!!!!!!!!

usolo的主页 usolo | 初学一级 | 园豆:116
提问于:2012-02-27 09:19
< >
分享
所有回答(2)
0

最好分段读取,这样速度快体验好,用一个配置文件记录读取的信息,分段代码可以参考:

string filePath = @"D:\test.txt";
int bufferSize = 1024; //每次读取的字节数
byte[] buffer = new byte[bufferSize];
FileStream stream = null;
try
{
stream = new FileStream(filePath, FileMode.Open);
long fileLength = stream.Length;//文件流的长度
int readCount = (int)Math.Ceiling((double)(fileLength / bufferSize)); //需要对文件读取的次数
int tempCount = 0;//当前已经读取的次数
do
{
stream.Read(buffer, tempCount * bufferSize, bufferSize); //分readCount次读取这个文件流,每次从上次读取的结束位置开始读取bufferSize个字节
//这里加入接收和处理数据的逻辑-
string str = Encoding.Default.GetString(buffer);
Console.WriteLine(str);
tempCount++;
}
while (tempCount < readCount);
}
catch
{

}
finally
{
if (stream != null)
stream.Dispose();
}
artwl | 园豆:16736 (专家六级) | 2012-02-27 09:39

在第二次执行do的时候就报错了,而且我用到了DocumentViewer控件,

这里也要读取文件,所以同时访问会有冲突,有没有一个好的解决办法,网上也没查到相关资料 - -!

支持(0) 反对(0) usolo | 园豆:116 (初学一级) | 2012-02-27 10:38

还有个问题,大哥,

阅读器中这种目录导航一般是怎么做的?
支持(0) 反对(0) usolo | 园豆:116 (初学一级) | 2012-02-27 11:21

@yusolo: 我没做过WPF开发,对这个不怎么懂,看起来应该是一个树,应该有这样的控件吧

支持(0) 反对(0) artwl | 园豆:16736 (专家六级) | 2012-02-27 11:32
0

放到内存中,和img 在WPF使用时一样的

阿冠 | 园豆:186 (初学一级) | 2015-03-18 10:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册