位图和图片框导致内存不足异常
本文关键字:内存不足 异常 位图 | 更新日期: 2023-09-27 18:11:31
我正在尝试创建一个应用程序,显示picturebox
中的在线列车。
但是我的应用程序花费了很多内存,有时我得到了Out of memory exception
,有时我从picturebox
列车Disappears
。为了第一次绘制在线火车,我在picturebox
上绘制火车(线路,车站,…)的地图,大小为x=A
和y=b
,之后我创建了另一个picturebox
,大小相同,并使用以下代码将第二个picturebox
放在第一个picturebox
上:
pictureBoxonlineTrain.Parent = pictureBoxMetroMap;
In every second the below function is executed :
public void DrawOnlineTrain()
{
Bitmap map=null;
if (OnlineTrainList.Count > 0)
{
map = new Bitmap(pictureBoxonlineTrain.Size.Width, pictureBoxonlineTrain.Size.Height);
var graph = Graphics.FromImage(map);
foreach (TimeTable t in OnlineTrainList.ToList())
{
// graph.Dispose();
Rectangle rectTrainState = new Rectangle(t.XTrainLocation.Value - 3,
t.YTrainLocation.Value - 3,
15, 15);
graph.FillRectangle(RedBrush, rectTrainState);
graph.DrawString(t.TrainId.ToString(), pictureBoxonlineTrain.Font, Brushes.White, t.XTrainLocation.Value -3, t.YTrainLocation.Value -3);
}
}
pictureBoxonlineTrain.Image = map;
// pictureBoxonlineTrain.Image.Save(@"C:'RailwayShiraz'ShirazMetro'ShirazRailWayWeb'Images'Train.jpg");
}
我认为这是我的内存异常的原因,因为每次我创建一个bitmap
和graphic
对象。我的问题是我怎么能改变这个代码作为对象处置在每个循环?
将位图和图形放入Using语句中,它将被处理
using (map = new Bitmap(pictureBoxonlineTrain.Size.Width, pictureBoxonlineTrain.Size.Height))
{
using (Graphics graph = Graphics.FromImage(map))
{
//code goes here
}
}