有什么解决方法?
DrawingVisual drawingVisual = new DrawingVisual();
DrawingContext drawingContext = drawingVisual.RenderOpen();
for (int i = 0; i < 100000; i++)
{
Pen pen = getPen();
drawingContext.DrawLine(pen, new Point(10, 10 + i), new Point(500, 10 + i));
}
drawingContext.Close();
System.IO.FileStream fs = new System.IO.FileStream(@"C:/test/test.png", System.IO.FileMode.Create);
RenderTargetBitmap bmp = new RenderTargetBitmap((int)(drawingVisual.ContentBounds.Width), (int)(drawingVisual.ContentBounds.Height), 96d, 96d, PixelFormats.Pbgra32);
bmp.Render(drawingVisual);
BitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bmp));
encoder.Save(fs);
fs.Close();
------解决思路----------------------
看你代码这个长宽是按你i,j增长? 疑似你的长宽太大,造成存储文件过大造成,你可以测试下是否最文件过大造成,建议最好先定义好图片的大小,然后再绘制输出。
drawingContext.DrawLine(pen, new Point(10, 10 + i), new Point(500, 10 + i));
------解决思路----------------------
只能分文件存储,用的时候拼接
------解决思路----------------------
看你代码这个长宽是按你i,j增长? 疑似你的长宽太大,造成存储文件过大造成,你可以测试下是否最文件过大造成,建议最好先定义好图片的大小,然后再绘制输出。
drawingContext.DrawLine(pen, new Point(10, 10 + i), new Point(500, 10 + i));
画1w条线输出文件没问题,10w条就出错了.
文件大的情况下要怎么输出才不会出错?
只能分文件存储,用的时候拼接
不是吧,WPF连一个500*100000像素的图片都没办法保存????
10W很小吗
你试试用windows画图板能把图片定义成500*10W?
------解决思路----------------------
这么庞大的数据量两个解决办法,栅格文件,或矢量存储。
看你的需求还是栅格比较实在,不过会有些失真,所以最好的办法还是矢量,唉唉。
栅格会失zhe
矢量的就不说了,实现方法太多,也很麻烦,需要的话自己去研究吧。