VC++.net 画图问题(急)
小弟第一次在这里提问希望能找到答案。确实已经找遍所有相关的中文站点了。还是找不到答案。现在小弟弟我在用vc++.net做一个有关于画图的项目。
其实画图并不是很难,就是画格子,格子里面是文字。
格子1--->格子2--->格子3---->格子4
格子5
如上图,相关格子之间用带箭头的线连接起来,当然除了水平线还有斜线,比如从格子1到格子5的斜线。
画完的图保存成jpg文件。
以上都不是问题。
原来使用的方法是
Graphics^ g;
bmp = gcnew System::Drawing::Bitmap(bmp_w,bmp_h);
g = Drawing::Graphics::FromImage(bmp);
//画图
g->DrawRectangle(pen, x1, y1, x2-x1, y2-y1);
。。。
//保存
bmp->Save("bmpBig.jpg", Drawing::Imaging::ImageFormat::Jpeg);
但是现在的问题是
由于最后花的图可能会很大,所以建立bmp对象的时候会占用很大的内存空间,这样到一定限度就会出现内存溢出的问题。
所以考虑用另外一种方法,不知道是否能实现。
就是现在的做法是把bmp当作画布,在上面画图,但是bmp这个画布越大需要的内存就越大。
有没有其他的对象作为画布来代替bmp,在这样的对象上把图画好以后,然后再把大图分割成一块一块小的bmp,
并且最后保存生成jpg文件呢?
有没有什么别的对象可以做为画布,在上面画很大图画的时候,又不占用很大资源,最后可以用StretchBlt来分割生成文件呢?
先谢谢大虾了。1111111 --------------------编程问答-------------------- 没人吗?自己顶 --------------------编程问答-------------------- 再顶。
大侠们帮帮小弟吧。 --------------------编程问答-------------------- 感觉楼主思路有问题,不要对位图操作,而是应该用图形
--------------------编程问答-------------------- 虽然BITMAP大的时候性能会很差,但是楼主你的思路可以转换一下。
你的BITMAP要作为画布,不一定要实际的大小那么大,用户或者计算机只需要某一时刻处理可见区域内的那部分就可以了。
其余部分可以在可见时,重绘。
这样这个BITMAP就一直是一个固定大小,性能问题就解决了。
另外正如HDT所说,好像你的方法可以改善。。。 --------------------编程问答-------------------- 接分是王道!
补充:.NET技术 , VC.NET