protected void AdapteBlockSizeAccordingToMapSize() { Rectangle r = Screen.GetWorkingArea(this); int newBlockSize = blockSize; while (newBlockSize > 1 && (map.GetWidth() * newBlockSize > r.Width || map.GetHeight() * newBlockSize > r.Height)) { newBlockSize = newBlockSize / 2; } if (newBlockSize != blockSize) { ChangeBlockSize(newBlockSize); } }
public void LoadMapFromFile(string filename) { //Open the stream and read it back. using (FileStream fs = File.OpenRead(filename)) { BinaryFormatter formatter = new BinaryFormatter(); PositionMap newMap = (PositionMap)formatter.Deserialize(fs); if (newMap != null) { map = newMap; map.RestoreArrayFromList();//从List恢复内容到数组 mapWidth = map.GetWidth(); mapHeight = map.GetHeight(); ChangeMapSize(mapWidth, mapHeight); AdapteBlockSizeAccordingToMapSize(); ClearTags(); drawMap(); } fs.Close(); } }